﻿Project Gutenberg Holy Bible, Douay-Rheims Version, O.T. Part 2


Copyright laws are changing all over the world, be sure to check
the copyright laws for your country before posting these files!!

Please take a look at the important information in this header.
We encourage you to keep this file on your own disk, keeping an
electronic path open for the next readers.  Do not remove this.


**Welcome To The World of Free Plain Vanilla Electronic Texts**

**Etexts Readable By Both Humans and By Computers, Since 1971**

*These Etexts Prepared By Hundreds of Volunteers and Donations*

Information on contacting Project Gutenberg to get Etexts, and
further information is included below.  We need your donations.


The Holy Bible

Douay-Rheims Version, Challoner Revision

Volume II:  The Second Part of the Old Testament  (Psalms - 2 Machabees)


January, 1999  [Etext #1610]


Project Gutenberg Holy Bible, Douay-Rheims Version, O.T. Part 2
*****This file should be named 2drvb10.txt or 2drvb10.zip******

Corrected EDITIONS of our etexts get a new NUMBER, 2drvb11.txt
VERSIONS based on separate sources get new LETTER, 2drvb10a.txt


This etext was prepared by Dennis McCarthy, Atlanta, Georgia
and Tad Book, student, Pontifical North American College, Rome.

Project Gutenberg Etexts are usually created from multiple editions,
all of which are in the Public Domain in the United States, unless a
copyright notice is included.  Therefore, we do NOT keep these books
in compliance with any particular paper edition, usually otherwise.


We are now trying to release all our books one month in advance
of the official release dates, for time for better editing.

Please note:  neither this list nor its contents are final till
midnight of the last day of the month of any such announcement.
The official release date of all Project Gutenberg Etexts is at
Midnight, Central Time, of the last day of the stated month.  A
preliminary version may often be posted for suggestion, comment
and editing by those who wish to do so.  To be sure you have an
up to date first edition [xxxxx10x.xxx] please check file sizes
in the first week of the next month.  Since our ftp program has
a bug in it that scrambles the date [tried to fix and failed] a
look at the file size will have to do, but we will try to see a
new copy has at least one byte more or less.


Information about Project Gutenberg (one page)

We produce about two million dollars for each hour we work.  The
fifty hours is one conservative estimate for how long it we take
to get any etext selected, entered, proofread, edited, copyright
searched and analyzed, the copyright letters written, etc.  This
projected audience is one hundred million readers.  If our value
per text is nominally estimated at one dollar then we produce $2
million dollars per hour this year as we release thirty-six text
files per month, or 432 more Etexts in 1999 for a total of 2000+
If these reach just 10% of the computerized population, then the
total should reach over 200 billion Etexts given away this year.

The Goal of Project Gutenberg is to Give Away One Trillion Etext
Files by the December 31, 2001.  [10,000 x 100,000,000=Trillion]
This is ten thousand titles each to one hundred million readers,
which is only ~5% of the present number of computer users.

At our revised rates of production, we will reach only one-third
of that goal by the end of 2001, or about 3,333 Etexts unless we
manage to get some real funding; currently our funding is mostly
from Michael Hart's salary at Carnegie-Mellon University, and an
assortment of sporadic gifts; this salary is only good for a few
more years, so we are looking for something to replace it, as we
don't want Project Gutenberg to be so dependent on one person.

We need your donations more than ever!


All donations should be made to "Project Gutenberg/CMU": and are
tax deductible to the extent allowable by law.  (CMU = Carnegie-
Mellon University).

For these and other matters, please mail to:

Project Gutenberg
P. O. Box  2782
Champaign, IL 61825

When all other email fails try our Executive Director:
Michael S. Hart <hart@pobox.com>

We would prefer to send you this information by email.

******

To access Project Gutenberg etexts, use any Web browser
to view http://promo.net/pg.  This site lists Etexts by
author and by title, and includes information about how
to get involved with Project Gutenberg.  You could also
download our past Newsletters, or subscribe here.  This
is one of our major sites, please email hart@pobox.com,
for a more complete list of our various sites.

To go directly to the etext collections, use FTP or any
Web browser to visit a Project Gutenberg mirror (mirror
sites are available on 7 continents; mirrors are listed
at http://promo.net/pg).

Mac users, do NOT point and click, typing works better.

Example FTP session:

ftp sunsite.unc.edu
login: anonymous
password: your@login
cd pub/docs/books/gutenberg
cd etext90 through etext99
dir [to see files]
get or mget [to get files. . .set bin for zip files]
GET GUTINDEX.??  [to get a year's listing of books, e.g., GUTINDEX.99]
GET GUTINDEX.ALL [to get a listing of ALL books]

***

**Information prepared by the Project Gutenberg legal advisor**

(Three Pages)


***START**THE SMALL PRINT!**FOR PUBLIC DOMAIN ETEXTS**START***
Why is this "Small Print!" statement here?  You know: lawyers.
They tell us you might sue us if there is something wrong with
your copy of this etext, even if you got it for free from
someone other than us, and even if what's wrong is not our
fault.  So, among other things, this "Small Print!" statement
disclaims most of our liability to you.  It also tells you how
you can distribute copies of this etext if you want to.

*BEFORE!* YOU USE OR READ THIS ETEXT
By using or reading any part of this PROJECT GUTENBERG-tm
etext, you indicate that you understand, agree to and accept
this "Small Print!" statement.  If you do not, you can receive
a refund of the money (if any) you paid for this etext by
sending a request within 30 days of receiving it to the person
you got it from.  If you received this etext on a physical
medium (such as a disk), you must return it with your request.

ABOUT PROJECT GUTENBERG-TM ETEXTS
This PROJECT GUTENBERG-tm etext, like most PROJECT GUTENBERG-
tm etexts, is a "public domain" work distributed by Professor
Michael S. Hart through the Project Gutenberg Association at
Carnegie-Mellon University (the "Project").  Among other
things, this means that no one owns a United States copyright
on or for this work, so the Project (and you!) can copy and
distribute it in the United States without permission and
without paying copyright royalties.  Special rules, set forth
below, apply if you wish to copy and distribute this etext
under the Project's "PROJECT GUTENBERG" trademark.

To create these etexts, the Project expends considerable
efforts to identify, transcribe and proofread public domain
works.  Despite these efforts, the Project's etexts and any
medium they may be on may contain "Defects".  Among other
things, Defects may take the form of incomplete, inaccurate or
corrupt data, transcription errors, a copyright or other
intellectual property infringement, a defective or damaged
disk or other etext medium, a computer virus, or computer
codes that damage or cannot be read by your equipment.

LIMITED WARRANTY; DISCLAIMER OF DAMAGES
But for the "Right of Replacement or Refund" described below,
[1] the Project (and any other party you may receive this
etext from as a PROJECT GUTENBERG-tm etext) disclaims all
liability to you for damages, costs and expenses, including
legal fees, and [2] YOU HAVE NO REMEDIES FOR NEGLIGENCE OR
UNDER STRICT LIABILITY, OR FOR BREACH OF WARRANTY OR CONTRACT,
INCLUDING BUT NOT LIMITED TO INDIRECT, CONSEQUENTIAL, PUNITIVE
OR INCIDENTAL DAMAGES, EVEN IF YOU GIVE NOTICE OF THE
POSSIBILITY OF SUCH DAMAGES.

If you discover a Defect in this etext within 90 days of
receiving it, you can receive a refund of the money (if any)
you paid for it by sending an explanatory note within that
time to the person you received it from.  If you received it
on a physical medium, you must return it with your note, and
such person may choose to alternatively give you a replacement
copy.  If you received it electronically, such person may
choose to alternatively give you a second opportunity to
receive it electronically.

THIS ETEXT IS OTHERWISE PROVIDED TO YOU "AS-IS".  NO OTHER
WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, ARE MADE TO YOU AS
TO THE ETEXT OR ANY MEDIUM IT MAY BE ON, INCLUDING BUT NOT
LIMITED TO WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
PARTICULAR PURPOSE.

Some states do not allow disclaimers of implied warranties or
the exclusion or limitation of consequential damages, so the
above disclaimers and exclusions may not apply to you, and you
may have other legal rights.

INDEMNITY
You will indemnify and hold the Project, its directors,
officers, members and agents harmless from all liability, cost
and expense, including legal fees, that arise directly or
indirectly from any of the following that you do or cause:
[1] distribution of this etext, [2] alteration, modification,
or addition to the etext, or [3] any Defect.

DISTRIBUTION UNDER "PROJECT GUTENBERG-tm"
You may distribute copies of this etext electronically, or by
disk, book or any other medium if you either delete this
"Small Print!" and all other references to Project Gutenberg,
or:

[1]  Only give exact copies of it.  Among other things, this
     requires that you do not remove, alter or modify the
     etext or this "small print!" statement.  You may however,
     if you wish, distribute this etext in machine readable
     binary, compressed, mark-up, or proprietary form,
     including any form resulting from conversion by word pro-
     cessing or hypertext software, but only so long as
     *EITHER*:

     [*]  The etext, when displayed, is clearly readable, and
          does *not* contain characters other than those
          intended by the author of the work, although tilde
          (~), asterisk (*) and underline (_) characters may
          be used to convey punctuation intended by the
          author, and additional characters may be used to
          indicate hypertext links; OR

     [*]  The etext may be readily converted by the reader at
          no expense into plain ASCII, EBCDIC or equivalent
          form by the program that displays the etext (as is
          the case, for instance, with most word processors);
          OR

     [*]  You provide, or agree to also provide on request at
          no additional cost, fee or expense, a copy of the
          etext in its original plain ASCII form (or in EBCDIC
          or other equivalent proprietary form).

[2]  Honor the etext refund and replacement provisions of this
     "Small Print!" statement.

[3]  Pay a trademark license fee to the Project of 20% of the
     net profits you derive calculated using the method you
     already use to calculate your applicable taxes.  If you
     don't derive profits, no royalty is due.  Royalties are
     payable to "Project Gutenberg Association/Carnegie-Mellon
     University" within the 60 days following each
     date you prepare (or were legally required to prepare)
     your annual (or equivalent periodic) tax return.

WHAT IF YOU *WANT* TO SEND MONEY EVEN IF YOU DON'T HAVE TO?
The Project gratefully accepts contributions in money, time,
scanning machines, OCR software, public domain etexts, royalty
free copyright licenses, and every other sort of contribution
you can think of.  Money should be paid to "Project Gutenberg
Association / Carnegie-Mellon University".

*END*THE SMALL PRINT! FOR PUBLIC DOMAIN ETEXTS*Ver.04.29.93*END*





This etext was prepared by Dennis McCarthy, Atlanta, Georgia
and Tad Book, student, Pontifical North American College, Rome.





THE HOLY BIBLE




Translated from the Latin Vulgate


Diligently Compared with the Hebrew, Greek,
and Other Editions in Divers Languages


THE OLD TESTAMENT
First Published by the English College at Douay
A.D. 1609 & 1610

and

THE NEW TESTAMENT
First Published by the English College at Rheims
A.D. 1582


With Annotations


The Whole Revised and Diligently Compared with
the Latin Vulgate by Bishop Richard Challoner
A.D. 1749-1752



VOLUME II:  THE SECOND PART OF THE OLD TESTAMENT




CREDITS


Without the assistance of many individuals and groups, this text of the
Douay-Rheims Version of the Holy Bible would not be available for the
Project Gutenberg collection.  Our most grateful and sincere thanks goes
to those at 'Catholic Software' who have provided the electronic plain
texts of the 73 books of the Bible.  'Catholic Software' also produces a
Douay Bible program on CD-ROM that features a fully searchable Douay-
Rheims Bible, footnotes, Latin text and dictionary, topical index, maps,
Biblical art gallery, and other features.  For more information of this
and many other products contact:

Catholic Software
Box 1914
Murray, KY 42071
(502) 753-8198
http://www.catholicity.com/market/CSoftware/
waubrey@aol.com

Additional production assistance has been provided by volunteers from
the Atlanta Council of the Knights of Columbus.  Tad Book compiled and
reformatted the texts to Project Gutenberg standards.  Dennis McCarthy
assisted Mr. Book and transcribed selections from the first editions
included as appendices.




HISTORY


This three volume e-text set comes from multiple editions of Challoner's
revised Douay-Rheims Version of the Holy Bible.  The division of the Old
Testaments into two parts follows the two tome format of the 1609/1610
printing of the Old Testament.  In 1568 English exiles, many from
Oxford, established the English College of Douay (Douai/Doway), Flanders,
under William (later Cardinal) Allen.  In October, 1578, Gregory Martin
began the work of preparing an English translation of the Bible for
Catholic readers, the first such translation into Modern English.
Assisting were William Allen, Richard Bristow, Thomas Worthington, and
William Reynolds who revised, criticized, and corrected Dr. Martin's
work.  The college published the New Testament at Rheims (Reims/Rhemes),
France, in 1582 through John Fogny with a preface and explanatory notes,
authored chiefly by Bristol, Allen, and Worthington.  Later the Old
Testament was published at Douay in two parts (1609 and 1610) by Laurence
Kellam through the efforts of Dr. Worthington, then superior of the
seminary.  The translation had been prepared before the appearance of the
New Testament, but the publication was delayed due to financial
difficulties.  The religious and scholarly adherence to the Latin Vulgate
text led to the less elegant and idiomatic words and phrases often found
in the translation.  In some instances where no English word conveyed the
full meaning of the Latin, a Latin word was Anglicized and its meaning
defined in a glossary.  Although ridiculed by critics, many of these
words later found common usage in the English language.  Spellings of
proper names and the numbering of the Psalms are adopted from the Latin
Vulgate.

In 1749 Dr. Richard Challoner began a major revision of the Douay and
Rheims texts, the spellings and phrasing of which had become increasingly
archaic in the almost two centuries since the translations were first
produced.  He modernized the diction and introduced a more fluid style,
while faithfully maintaining the accuracy of Dr. Martin's texts.  This
revision became the 'de facto' standard text for English speaking
Catholics until the twentieth century.  It is still highly regarded by
many for its style, although it is now rarely used for liturgical
purposes.  The notes included in this electronic edition are generally
attributed to Bishop Challoner.

The 1610 printing of the second tome of the Old Testament includes an
appendix containing the non-canonical books 'Prayer of Manasses,' 'Third
Booke of Esdras,' and 'Fourth Booke of Esdras.'  While not part of
Challoner's revision, the 1610 texts are placed in the appendices of
Vol. II of this e-text set.  Also included are the original texts of two
short books, 'The Prophecie of Abdias' (Vol. II) and 'The Catholike
Epistle of Iude the Apostle' (Vol. III), to give the reader a sense of
the language of the first editions in comparison to the Challoner
revision.  Further background on the Douay-Rheims version may be found in
a selection from the preface to the 1582 edition and the original
glossary included in the appendices of Vol. III.




CONTENTS


The Second Part of the Old Testament

  Book of Psalms
  Book of Proverbs
  Ecclesiastes
  Solomon's Canticle of Canticles
  Book of Wisdom
  Ecclesiasticus
  Prophecy of Isaias
  Prophecy of Jeremias
  Lamentations of Jeremias
  Prophecy of Baruch
  Prophecy of Ezechiel
  Prophecy of Daniel
  Prophecy of Osee
  Prophecy of Joel
  Prophecy of Amos
  Prophecy of Abdias
  Prophecy of Jonas
  Prophecy of Micheas
  Prophecy of Nahum
  Prophecy of Habacuc
  Prophecy of Sophonias
  Prophecy of Aggeus
  Prophecy of Zacharias
  Prophecy of Malachias
  First Book of Machabees
  Second Book of Machabees


Appendices

  The Prayer of Manasses
  The Third Booke of Esdras
  The Fourth Booke of Esdras

  The Prophecie of Abdias





THE BOOK OF PSALMS



The psalms are called by the Hebrews TEHILLIM, that is, Hymns of
Praise.  The author, of a great part of them at least, was king David:
but many are of opinion that some of them were made by Asaph, and
others whose names are prefixed in the titles.



Psalms Chapter 1


Beatus vir.

The happiness of the just and the evil state of the wicked.

1:1. Blessed is the man who hath not walked in the counsel of the
ungodly, nor stood in the way of sinners, nor sat in the chair of
pestilence:

1:2. But his will is in the law of the Lord, and on his law he shall
meditate day and night.

1:3. And he shall be like a tree which is planted near the running
waters, which shall bring forth its fruit, in due season.  And his leaf
shall not fall off:  and all whatsoever he shall do shall prosper.

1:4. Not so the wicked, not so:  but like the dust, which the wind
driveth from the face of the earth.

1:5. Therefore the wicked shall not rise again in judgment:  nor sinners
in the council of the just.

1:6. For the Lord knoweth the way of the just:  and the way of the
wicked shall perish.



Psalms Chapter 2


Quare fremuerunt.

The vain efforts of persecutors against Christ and his church.

2:1. Why have the Gentiles raged, and the people devised vain things?

2:2. The kings of the earth stood up, and the princes met together,
against the Lord, and against his Christ.

2:3. Let us break their bonds asunder:  and let us cast away their yoke
from us.

2:4. He that dwelleth in heaven shall laugh at them:  and the Lord shall
deride them.

2:5. Then shall he speak to them in his anger, and trouble them in his
rage.

2:6. But I am appointed king by him over Sion, his holy mountain,
preaching his commandment.

2:7. The Lord hath said to me:  Thou art my son, this day have I
begotten thee.

2:8. Ask of me, and I will give thee the Gentiles for thy inheritance,
and the utmost parts of the earth for thy possession.

2:9. Thou shalt rule them with a rod of iron, and shalt break them in
pieces like a potter's vessel.

2:10. And now, O ye kings, understand:  receive instruction, you that
judge the earth.

2:11. Serve ye the Lord with fear:  and rejoice unto him with trembling.

2:12. Embrace discipline, lest at any time the Lord be angry, and you
perish from the just way.

2:13. When his wrath shall be kindled in a short time, blessed are all
they that trust in him.



Psalms Chapter 3


Domine, quid multiplicati.

The prophet's danger and delivery from his son Absalom:  mystically, the
passion and resurrection of Christ.

3:1. The psalm of David when he fled from the face of his son Absalom.

3:2. Many say to my soul:  There is no salvation for him in his God.

3:4. But thou, O Lord, art my protector, my glory, and the lifter up of
my head.

3:5. I have cried to the Lord with my voice:  and he hath heard me from
his holy hill.

3:6. I have slept and have taken my rest:  and I have risen up, because
the Lord hath protected me.

3:7. I will not fear thousands of the people surrounding me:  arise, O
Lord; save me, O my God.

3:8. For thou hast struck all them who are my adversaries without
cause:  thou hast broken the teeth of sinners.

3:9. Salvation is of the Lord:  and thy blessing is upon thy people.



Psalms Chapter 4


Cum invocarem.

The prophet teacheth us to flee to God in tribulation, with confidence
in him.

4:1. Unto the end, in verses.  A psalm for David.

Unto the end. . .Or, as St. Jerome renders it, victori, to him that
overcometh:  which some understand of the chief musician; to whom they
suppose the psalms, which bear that title, were given to be sung:  we
rather understand the psalms thus inscribed to refer to Christ, who is
the end of the law, and the great conqueror of death and hell, and to
the New Testament.--Ibid.  In verses, in carminibus. . .In the Hebrew, it
is neghinoth, supposed by some to be a musical instrument, with which
this psalm was to be sung.--Ibid.  For David, or to David. . .That is,
inspired to David himself, or to be sung.

4:2. When I called upon him, the God of my justice heard me:  when I was
in distress, thou hast enlarged me.  Have mercy on me:  and hear my
prayer.

4:3. O ye sons of men, how long will you be dull of heart?  why do you
love vanity, and seek after lying?

4:4. Know ye also that the Lord hath made his holy one wonderful:  the
Lord will hear me when I shall cry unto him.

4:5. Be ye angry, and sin not:  the things you say in your hearts, be
sorry for them upon your beds.

4:6. Offer up the sacrifice of justice, and trust in the Lord:  many
say, Who sheweth us good things?

4:7. The light of thy countenance, O Lord, is signed upon us:  thou hast
given gladness in my heart.

4:8. By the fruit of their corn, their wine, and oil, they rest:

4:9. In peace in the self same I will sleep, and I will rest:

4:10. For thou, O Lord, singularly hast settled me in hope.



Psalms Chapter 5


Verba mea auribul.

A prayer to God against the iniquities of men.

5:1. Unto the end, for her that obtaineth the inheritance.  A psalm for
David.

For her that obtaineth the inheritance. . .That is, for the church of
Christ.

5:2. Give ear, O Lord, to my words, understand my cry.

5:3. Hearken to the voice of my prayer, O my King and my God.

5:4. For to thee will I pray:  O Lord, in the morning thou shalt hear my
voice.

5:5. In the morning I will stand before thee, and I will see:  because
thou art not a God that willest iniquity.

5:6. Neither shall the wicked dwell near thee:  nor shall the unjust
abide before thy eyes.

5:7. Thou hatest all the workers of iniquity:  thou wilt destroy all
that speak a lie.  The bloody and the deceitful man the Lord will abhor.

5:8. But as for me in the multitude of thy mercy, I will come into thy
house; I will worship towards thy holy temple, in thy fear.

5:9. Conduct me, O Lord, in thy justice:  because of my enemies, direct
my way in thy sight.

5:10. For there is no truth in their mouth:  their heart is vain.

5:11. Their throat is an open sepulchre:  they dealt deceitfully with
their tongues:  judge them, O God.  Let them fall from their devices:
according to the multitude of their wickednesses cast them out:  for
they have provoked thee, O Lord.

5:12. But let all them be glad that hope in thee:  they shall rejoice
for ever, and thou shalt dwell in them.  And all they that love thy name
shall glory in thee.

5:13. For thou wilt bless the just.  O Lord, thou hast crowned us, as
with a shield of thy good will.



Psalms Chapter 6


Domine, ne in furore.

A prayer of a penitent sinner, under the scourge of God.  The first
penitential psalm.

6:1. Unto the end, in verses, a psalm for David, for the octave.

For the octave. . .That is, to be sung on an instrument of eight
strings.  St. Augustine understands it mystically, of the last
resurrection, and the world to come; which is, as it were, the octave,
or eighth day, after the seven days of this mortal life:  and for this
octave, sinners must dispose themselves, like David, by bewailing their
sins, whilst they are here upon earth.

6:2. O Lord, rebuke me not in thy indignation, nor chastise me in thy
wrath.

6:3. Have mercy on me, O Lord, for I am weak:  heal me, O Lord, for my
bones are troubled.

6:4. And my soul is troubled exceedingly:  but thou, O Lord, how long?

6:5. Turn to me, O Lord, and deliver my soul:  O save me for thy mercy's
sake.

6:6. For there is no one in death, that is mindful of thee:  and who
shall confess to thee in hell?

6:7. I have laboured in my groanings, every night I will wash my bed:  I
will water my couch with my tears.

6:8. My eye is troubled through indignation:  I have grown old amongst
all my enemies.

6:9. Depart from em, all ye workers of iniquity:  for the Lord hath
heard the voice of my weeping.

6:10. The Lord hath heard my supplication:  the Lord hath received my
prayer.

6:11. Let all my enemies be ashamed, and be very much troubled:  let
them be turned back, and be ashamed very speedily.



Psalms Chapter 7


Domine, Deus meus.

David, trusting in the justice of his cause, prayeth for God's help
against his enemies.

7:1. The psalm of David, which he sung to the Lord, for the words of
Chusi, the son of Jemini.

7:2. O Lord, my God, in thee have I put my trust; same me from all them
that persecute me, and deliver me.

7:3. Lest at any time he seize upon my soul like a lion, while there is
no one to redeem me, nor to save.

7:4. O Lord, my God, if I have done this thing, if there be iniquity in
my hands:

7:5. If I have rendered to them that repaid me evils, let me deservedly
fall empty before my enemies.

7:6. Let the enemy pursue my soul, and take it, and tread down my life,
on the earth, and bring down my glory to the dust.

7:7. Rise up, O Lord, in thy anger:  and be thou exalted in the borders
of my enemies.  And arise, O Lord, my God, in the precept which thou
hast commanded:

7:8. And a congregation of people shall surround thee.  And for their
sakes return thou on high.

7:9. The Lord judgeth the people.  Judge me, O Lord, according to my
justice, and according to my innocence in me.

7:10. The wickedness of sinners shall be brought to nought; and thou
shalt direct the just:  the searcher of hearts and reins is God.  Just

7:11. Is my help from the Lord; who saveth the upright of heart.

7:12. God is a just judge, strong and patient:  is he angry every day?

7:13. Except you will be converted, he will brandish his sword; he hath
bent his bow, and made it ready.

7:14. And in it he hath prepared to instruments of death, he hath made
ready his arrows for them that burn.

For them that burn. . .That is, against the persecutors of his saints.

7:15. Behold he hath been in labour with injustice:  he hath conceived
sorrow, and brought forth iniquity.

7:16. He hath opened a pit and dug it:  and he is fallen into the hole
he made.

7:17. His sorrow shall be turned on his own head:  and his iniquity
shall come down upon his crown.

7:18. I will give glory to the Lord according to his justice:  and will
sing to the name of the Lord the most high.



Psalms Chapter 8


Domine, Dominus noster.

God is wonderful in his works; especially in mankind, singularly
exalted by the incarnation of Christ.

8:1. Unto the end, for the presses:  a psalm for David.

The presses. . .In Hebrew, Gittith, supposed to be a musical instrument.

8:2. O Lord, our Lord, how admirable is thy name in the whole earth!
For thy magnificence is elevated above the heavens.

8:3. Out of the mouth of infants and of sucklings thou hast perfected
praise, because of thy enemies, that thou mayst destroy the enemy and
the avenger.

8:4. For I will behold thy heavens, the works of thy fingers:  the moon
and the stars which thou hast founded.

8:5. What is man, that thou art mindful of him?  or the son of man, that
thou visitest him?

8:6. Thou hast made him a little less than the angels, thou hast
crowned him with glory and honour:

8:7. And hast set him over the works of thy hands.

8:8. Thou hast subjected all things under his feet, all sheep and oxen:
moreover, the beasts also of the fields.

8:9. The birds of the air, and the fishes of the sea, that pass through
the paths of the sea.

8:10. O Lord, our Lord, how admirable is thy name in the whole earth!



Psalms Chapter 9


Confitebor tibi, Domine.  The church praiseth God for his protection
against her enemies.

9:1. Unto the end, for the hidden things of the Son.  A psalm for David.

The hidden things of the Son. . .The humility and sufferings of Christ,
the Son of God; and of good Christians, who are his sons by adoption;
are called hidden things, with regard to the children of this world,
who know not the value and merit of them.

9:2. I will give praise to thee, O Lord, with my whole heart:  I will
relate all thy wonders.

9:3. I will be glad, and rejoice in thee:  I will sing to thy name, O
thou most high.

9:4. When my enemy shall be turned back:  they shall be weakened, and
perish before thy face.

9:5. For thou hast maintained my judgment and my cause:  thou hast sat
on the throne, who judgest justice.

9:6. Thou hast rebuked the Gentiles, and the wicked one hath perished;
thou hast blotted out their name for ever and ever.

9:7. The swords of the enemy have failed unto the end:  and their cities
thou hast destroyed.  Their memory hath perished with a noise:

9:8. But the Lord remaineth for ever.  He hath prepared his throne in
judgment:

9:9. And he shall judge the world in equity, he shall judge the people
in justice.

9:10. And the Lord is become a refuge for the poor:  a helper in due
time in tribulation.

9:11. And let them trust in thee who know thy name:  for thou hast not
forsaken them that seek thee, O Lord.

9:12. Sing ye to the Lord, who dwelleth in Sion:  declare his ways among
the Gentiles:

9:13. For requiring their blood, he hath remembered them:  he hath not
forgotten the cry of the poor.

9:14. Have mercy on me, O Lord:  see my humiliation which I suffer from
my enemies.

9:15. Thou that liftest me up from the gates of death, that I may
declare all thy praises in the gates of the daughter of Sion.

9:16. I will rejoice in thy salvation:  the Gentiles have stuck fast in
the destruction which they prepared.  Their foot hath been taken in the
very snare which they hid.

9:17. The Lord shall be known when he executeth judgments:  the sinner
hath been caught in the works of his own hands.

9:18. The wicked shall be turned into hell, all the nations that forget
God.

9:19. For the poor man shall not be forgotten to the end:  the patience
of the poor shall not perish for ever.

9:20. Arise, O Lord, let not man be strengthened:  let the Gentiles be
judged in thy sight.

9:21. Appoint, O Lord, a lawgiver over them:  that the Gentiles may know
themselves to be but men.

Here the late Hebrew doctors divide this psalm into two, making ver. 22
the beginning of Psalm 10.  And again they join Psalms 146 and 147 into
one, in order that the whole number of psalms should not exceed 150.
And in this manner the psalms are numbered in the Protestant Bible.

Psalm 10 according to the Hebrews.

9a:1. Why, O Lord, hast thou retired afar off?  why dost thou slight us
in our wants, in the time of trouble?

9a:2. Whilst the wicked man is proud, the poor is set on fire:  they are
caught in the counsels which they devise.

9a:3. For the sinner is praised in the desires of his soul:  and the
unjust man is blessed.

9a:4. The sinner hath provoked the Lord, according to the multitude of
his wrath, he will not seek him:

9a:5. God is not before his eyes:  his ways are filthy at all times.  Thy
judgments are removed form his sight:  he shall rule over all his
enemies.

9a:6. For he hath said in his heart:  I shall not be moved from
generation to generation, and shall be without evil.

9a:7. His mouth is full of cursing, and of bitterness, and of deceit:
under his tongue are labour and sorrow.

9a:8. He sitteth in ambush with the rich, in private places, that he may
kill the innocent.

9a:9. His eyes are upon the poor man:  he lieth in wait, in secret, like
a lion in his den.  He lieth in ambush, that he may catch the poor man:
so catch the poor, whilst he draweth him to him.

9a:10. In his net he will bring him down, he will crouch and fall, when
he shall have power over the poor.

9a:11. For he hath said in his heart:  God hath forgotten, he hath turned
away his face, not to see to the end.

9a:12. Arise, O Lord God, let thy hand be exalted:  forget not the poor.

9a:13. Wherefore hath the wicked provoked God?  for he hath said in his
heart:  He will not require it.

9a:14. Thou seest it, for thou considerest labour and sorrow:  that thou
mayst deliver them into thy hands.  To thee is the poor man left:  thou
wilt be a helper to the orphan.

9a:15. Break thou the arm of the sinner and of the malignant:  his sin
shall be sought, and shall not be found.

9a:16. The Lord shall reign to eternity, yea, for ever and ever:  ye
Gentiles shall perish from his land.

9a:17. The Lord hath heard the desire of the poor:  thy ear hath heard
the preparation of their heart.

9a:18. To judge for the fatherless and for the humble, that man may no
more presume to magnify himself upon earth.



Psalms Chapter 10


In Domino confido.

The just man's confidence in God in the midst of persecutions.

10:1. Unto the end.  A psalm to David.

10:2. In the Lord I put my trust:  how then do you say to my soul:  Get
thee away from hence to the mountain, like a sparrow.

10:3. For, lo, the wicked have bent their bow:  they have prepared their
arrows in the quiver, to shoot in the dark the upright of heart.

10:4. For they have destroyed the things which thou hast made:  but what
has the just man done?

10:5. The Lord is in his holy temple, the Lord's throne is in heaven.
His eyes look on the poor man:  his eyelids examine the sons of men.

10:6. The Lord trieth the just and the wicked:  but he that loveth
iniquity, hateth his own soul.

10:7. He shall rain snares upon sinners:  fire and brimstone, and storms
of winds, shall be the portion of their cup.

10:8. For the Lord is just, and hath loved justice:  his countenance
hath beheld righteousness.



Psalms Chapter 11


Salvum me fac.

The prophet calls for God's help against the wicked.

11:1. Unto the end:  for the octave, a psalm for David.

11:2. Save me, O Lord, for there is now no saint:  truths are decayed
from among the children of men.

11:3. They have spoken vain things, every one to his neighbour:  with
deceitful lips, and with a double heart have they spoken.

11:4. May the Lord destroy all deceitful lips, and the tongue that
speaketh proud things.

11:5. Who have said:  We will magnify our tongue:  our lips are our own:
who is Lord over us?

11:6. By reason of the misery of the needy, and the groans of the poor,
now will I arise, saith the Lord.  I will set him in safety:  I will deal
confidently in his regard.

11:7. The words of the Lord are pure words:  as silver tried by the
fire, purged from the earth, refined seven times.

11:8. Thou, O Lord, wilt preserve us:  and keep us from this generation
for ever.

11:9. The wicked walk round about:  according to thy highness, thou hast
multiplied the children of men.



Psalms Chapter 12


Usquequo, Domine.

A prayer in tribulation.

12:1. Unto the end, a psalm for David.  How long, O Lord, wilt thou
forget me unto the end?  how long dost thou turn away thy face from me?

12:2. How long shall I take counsels in my soul, sorrow in my heart all
the day?

12:3. How long shall my enemy be exalted over Me?

12:4. Consider, and hear me, O Lord, my God.  Enlighten my eyes, that I
never sleep in death:

12:5. Lest at any time my enemy say:  I have prevailed against him.  They
that trouble me, will rejoice when I am moved:

12:6. But I have trusted in thy mercy.  My heart shall rejoice in thy
salvation:  I will sing to the Lord, who giveth me good things:  yea, I
will sing to the name of the Lord, the most high.



Psalms Chapter 13


Dixit insipiens.

The general corruption of man before our redemption by Christ.

13:1. Unto the end, a psalm for David.  The fool hath said in his heart:
There is no God.  They are corrupt, and are become abominable in their
ways:  there is none that doth good, no not one.

13:2. The Lord hath looked down from heaven upon the children of men,
to see if there be any that understand and seek God.

13:3. They are all gone aside, they are become unprofitable together:
there is none that doth good:  no not one.  Their throat is an open
sepulchre; with their tongues they acted deceitfully:  the poison of
asps is under their lips.  Their mouth is full of cursing and
bitterness; their feet are swift to shed blood.  Destruction and
unhappiness in their ways; and the way of peace they have not known:
there is no fear of God before their eyes.

13:4. Shall not all they know that work iniquity, who devour my people
as they eat bread?

13:5. They have not called upon the Lord:  there have they trembled for
fear, where there was no fear.

13:6. For the Lord is in the just generation:  you have confounded the
counsel of the poor man; but the Lord is his hope.

13:7. Who shall give out of Sion the salvation of Israel?  when the Lord
shall have turned away the captivity of his people, Jacob shall
rejoice, and Israel shall be glad.



Psalms Chapter 14


Domine, quis habitabit.

What kind of men shall dwell in the heavenly Sion.

14:1. A psalm for David.  Lord, who shall dwell in thy tabernacle?  or
who shall rest in thy holy hill?

14:2. He that walketh without blemish, and worketh justice:

14:3. He that speaketh truth in his heart, who hath not used deceit in
his tongue:  Nor hath done evil to his neighbour:  nor taken up a
reproach against his neighbours.

14:4. In his sight the malignant is brought to nothing:  but he
glorifieth them that fear the Lord.  He that sweareth to his neighbour,
and deceiveth not;

14:5. He that hath not put out his money to usury, nortaken bribes
against the innocent:  He that doth these things, shall not be moved for
ever.



Psalms Chapter 15


Conserva me, Domine.

Christ's future victory and triumph over the world and death.

15:1. The inscription of a title to David himself.  Preserve me, O Lord,
for I have put my trust in thee.

The inscription of a title. . .That is, of a pillar or monument,
staylographia:  which is as much as to say, that this psalm is most
worthy to be engraved on an everlasting monument.

15:2. I have said to the Lord, thou art my God, for thou hast no need
of my goods.

15:3. To the saints, who are in his land, he hath made wonderful all my
desires in them.

15:4. Their infirmities were multiplied:  afterwards they made haste.  I
will not gather together their meetings for bloodofferings:  nor will I
be mindful of their names by my lips.

15:5. The Lord is the portion of my inheritance and of my cup:  it is
thou that wilt restore my inheritance to me.

15:6. The lines are fallen unto me in goodly places:  for my inheritance
is goodly to me.

15:7. I will bless the Lord, who hath given me understanding:  moreover,
my reins also have corrected me even till night.

15:8. I set the Lord always in my sight:  for he is at my right hand,
that I be not moved.

15:9. Therefore my heart hath been glad, and my tongue hath rejoiced:
moreover, my flesh also shall rest in hope.

15:10. Because thou wilt not leave my soul in hell; nor wilt thou give
thy holy one to see corruption.

15:11. Thou hast made known to me the ways of life, thou shalt fill me
with joy with thy countenance:  at thy right hand are delights even to
the end.



Psalms Chapter 16


Exaudi, Domine, justitiam.

A just man's prayer in tribulation against the malice of his enemy.

16:1. The prayer of David.  Hear, O Lord, my justice:  attend to my
supplication.  Give ear unto my prayer, which proceedeth not from
deceitful lips.

16:2. Let my judgment come forth from thy countenance:  let thy eyes
behold the things that are equitable.

16:3. Thou hast proved my heart, and visited it by night, thou hast
tried me by fire:  and iniquity hath not been found in me.

16:4. That my mouth may not speak the works of men:  for the sake of the
words of thy lips, I have kept hard ways.

16:5. Perfect thou my goings in thy paths:  that my footsteps be not
moved.

16:6. I have cried to thee, for thou, O God, hast heard me:  O incline
thy ear unto me, and hear my words.

16:7. Shew forth thy wonderful mercies; thou who savest them that trust
in thee.

16:8. From them that resist thy right hand keep me, as the apple of thy
eye.  Protect me under the shadow of thy wings.

16:9. From the face of the wicked who have afflicted me.  My enemies
have surrounded my soul:

16:10. They have shut up their fat:  their mouth hath spoken proudly.

Their fat. . .That is, their bowels of compassion:  for they have none
for me.

16:11. They have cast me forth, and now they have surrounded me:  they
have set their eyes bowing down to the earth.

16:12. They have taken me, as a lion prepared for the prey; and as a
young lion dwelling in secret places.

16:13. Arise, O Lord, disappoint him and supplant him; deliver my soul
from the wicked one; thy sword

16:14. From the enemies of thy hand.  O Lord, divide them from the few
of the earth in their life:  their belly is filled from thy hidden
stores.  They are full of children:  and they have left to their little
ones the rest of their substance.

Divide them from the few, etc. . .That is, cut them off from the earth,
and the few trifling things thereof; which they are so proud of, or
divide them from the few; that is, from thy elect, who are but few;
that they may no longer have it in their power to oppress them.  It is
not meant by way of a curse or imprecation; but, as many other the like
passages in the psalms, by way of a prediction, or prophecy of what
should come upon them, in punishment of their wickedness.  Ibid.  Thy
hidden stores. . .Thy secret treasures, out of which thou furnishest
those earthly goods, which, with a bountiful hand thou hast distributed
both to the good and the bad.

16:15. But as for me, I will appear before thy sight in justice:  I
shall be satisfied when thy glory shall appear.



Psalms Chapter 17


Diligam te, Domine.

David's thanks to God for his delivery from all his enemies.

17:1. Unto the end, for David, the servant of the Lord, who spoke to
the Lord the words of this canticle, in the day that the Lord delivered
him from the hand of all his enemies, and from the hand of Saul:  and he
said:

17:2. I will love thee, O Lord, my strength:

17:3. The Lord is my firmament, my refuge, and my deliverer.  My God is
my helper, and in him will I put my trust.  My protector, and the horn
of my salvation, and my support.

17:4. Praising, I will call upon the Lord:  and I shall be saved from my
enemies.

17:5. The sorrows of death surrounded me:  and the torrents of iniquity
troubled me.

17:6. The sorrows of hell encompassed me:  and the snares of death
prevented me.

17:7. In my affliction I called upon the Lord, and I cried to my God:
And he heard my voice from his holy temple:  and my cry before him came
into his ears.

17:8. The earth shook and trembled:  the foundations of the mountains
were troubled and were moved, because he was angry with them.

17:9. There went up a smoke in his wrath:  and a fire flamed from his
face:  coals were kindled by it.

17:10. He bowed the heavens, and came down, and darkness was under his
feet.

17:11. And he ascended upon the cherubim, and he flew; he flew upon the
wings of the winds.

17:12. And he made darkness his covert, his pavilion round about him:
dark waters in the clouds of the air.

17:13. At the brightness that was before him the clouds passed, hail
and coals of fire.

17:14. And the Lord thundered from heaven, and the Highest gave his
voice:  hail and coals of fire.

17:15. And he sent forth his arrows, and he scattered them:  he
multiplied lightnings, and troubled them.

17:16. Then the fountains of waters appeared, and the foundations of
the world were discovered:  At thy rebuke, O Lord, at the blast of the
spirit of thy wrath.

17:17. He sent from on high, and took me:  and received me out of many
waters.

17:18. He delivered me from my strongest enemies, and from them that
hated me:  for they were too strong for me.

17:19. They prevented me in the day of my affliction:  and the Lord
became my protector.

17:20. And he brought me forth into a large place:  he saved me, because
he was well pleased with me.

17:21. And the Lord will reward me according to my justice; and will
repay me according to the cleanness of my hands:

17:22. Because I have kept the ways of the Lord; and have not done
wickedly against my God.

17:23. For all his judgments are in my sight:  and his justices I have
not put away from me.

17:24. And I shall be spotless with him:  and shall keep myself from my
iniquity.

17:25. And the Lord will reward me according to my justice:  and
according to the cleanness of my hands before his eyes.

17:26. With the holy thou wilt be holy; and with the innocent man thou
wilt be innocent:

17:27. And withe the elect thou wilt be elect:  and with the perverse
thou wilt be perverted.

17:28. For thou wilt save the humble people; but wilt bring down the
eyes of the proud.

17:29. For thou lightest my lamp, O Lord:  O my God, enlighten my
darkness.

17:30. For by thee I shall be delivered from temptation; and through my
God I shall go over a wall.

17:31. As for my God, his way is undefiled:  the words of the Lord are
fire-tried:  he is the protector of all that trust in him.

17:32. For who is God but the Lord?  or who is God but our God?

17:33. God, who hath girt me with strength; and made my way blameless.

17:34. Who hath made my feet like the feet of harts:  and who setteth me
upon high places.

17:35. Who teacheth my hands to war:  and thou hast made my arms like a
brazen bow.

17:36. And thou hast given me the protection of thy salvation:  and thy
right hand hath held me up:  And thy discipline hath corrected me unto
the end:  and thy discipline, the same shall teach me.

17:37. Thou hast enlarged my steps under me; and my feet are not
weakened.

17:38. I will pursue after my enemies, and overtake them:  and I will
not turn again till they are consumed.

17:39. I will break them, and they shall not be able to stand:  they
shall fall under my feet.

17:40. And thou hast girded me with strength unto battle; and hast
subdued under me them that rose up against me.

17:41. And thou hast made my enemies furn their back upon me, and hast
destroyed them that hated me.

17:42. They cried, but there was none to save them, to the Lord:  but he
heard them not.

17:43. And I shall beat them as small as the dust before the wind; I
shall bring them to nought, like the dirt in the streets.

17:44. Thou wilt deliver me from the contradictions of the people; thou
wilt make me head of the Gentiles.

17:45. A people which I knew not, hath served me:  at the hearing of the
ear they have obeyed me.

17:46. The children that are strangers have lied to me, strange
children have faded away, and have halted from their paths.

17:47. The Lord liveth, and blessed by my God, and let the God of my
salvation be exalted.

17:48. O God, who avengest me, and subduest the people under me, my
deliverer from my enraged enemies.

17:49. And thou wilt lift me up above them that rise up against me:
from the unjust man thou wilt deliver me.

17:50. Therefore will I give glory to thee, O Lord, among the nations,
and I will sing a psalm to thy name.

17:51. Giving great deliverance to his king, and shewing mercy to
David, his anointed:  and to his seed for ever.



Psalms Chapter 18


Coeli enarrant.

The works of God shew forth his glory:  his law is greatly to be
esteemed and loved.

18:1. Unto the end.  A Psalm for David.

18:2. The heavens shew forth the glory of God, and the firmament
declareth the work of his hands.

18:3. Day to day uttereth speech, and night to night sheweth knowledge.

18:4. There are no speeches nor languages, where their voices are not
heard.

18:5. Their sound hath gone forth into all the earth:  and their words
unto the ends of the world.

18:6. He hath set his tabernacle in the sun:  and he as a bridegroom
coming out of his bridechamber, Hath rejoiced as a giant to run the
way:

18:7. His going out is from the end of heaven, And his circuit even to
the end thereof:  and there is no one that can hide himself from his
heat.

18:8. The law of the Lord is unspotted, converting souls:  the testimony
of the Lord is faithful, giving wisdom to little ones.

18:9. The justices of the Lord are right, rejoicing hearts:  the
commandment of the Lord is lightsome, enlightening the eyes.

18:10. The fear of the Lord is holy, enduring for ever and ever:  the
judgments of the Lord are true, justified in themselves.

18:11. More to be desired than gold and many precious stones:  and
sweeter than honey and the honeycomb.

18:12. For thy servant keepeth them, and in keeping them there is a
great reward.

18:13. Who can understand sins?  from my secret ones cleanse me, O Lord:

18:14. And from those of others spare thy servant.  If they shall have
no dominion over me, then shall I be without spot:  and I shall be
cleansed form the greatest sin.

18:15. And the words of my mouth shall be such as may please:  and the
meditation of my heart always in thy sight.  O Lord, my helper and my
Redeemer.



Psalms Chapter 19


Exaudiat te Dominus.

A prayer for the king.

19:1. Unto the end.  A psalm for David.

19:2. May the Lord hear thee in the day of tribulation:  may the name of
the God of Jacob protect thee.

19:3. May he send thee help from the sanctuary:  and defend thee out of
Sion.

19:4. May he be mindful of all thy sacrifices:  and may thy whole
burntoffering be made fat.

19:5. May he give thee according to thy own heart; and confirm all thy
counsels.

19:6. We will rejoice in thy salvation; and in the name of our God we
shall be exalted.

19:7. The Lord fulfil all thy petitions:  now have I known that the Lord
hath saved his anointed.  He will hear him from his holy heaven:  the
salvation of his right hand is in powers.

The salvation of his right hand is in powers. . .That is, in strength.
His right hand is strong and mighty to save them that trust in him.

19:8. Some trust in chariots, and some in horses:  but we will call upon
the name of the Lord, our God.

19:9. They are bound, and have fallen:  but we are risen, and are set
upright.  O Lord, save the king:  and hear us in the day that we shall
call upon thee.



Psalms Chapter 20


Domine, in virtute.

Praise to God for Christ's exaltation after his passion.

20:1. Unto the end.  A psalm for David.

20:2. In thy strength, O Lord, the king shall joy; and in thy salvation
he shall rejoice exceedingly.

20:3. Thou hast given him his heart's desire:  and hast not withholden
from him the will of his lips.

20:4. For thou hast prevented him with blessings of sweetness:  thou
hast set on his head a crown of precious stones.

20:5. He asked life of thee:  and thou hast given him length of days for
ever and ever.

20:6. His glory is great in thy salvation:  glory and great beauty shalt
thou lay upon him.

20:7. For thou shalt give him to be a blessing for ever and ever:  thou
shalt make him joyful in gladness with thy countenance.

20:8. For the king hopeth in the Lord:  and through the mercy of the
most High he shall not be moved.

20:9. Let thy hand be found by all thy enemies:  let thy right hand find
out all them that hate thee.

20:10. Thou shalt make them as an oven of fire, in the time of thy
anger:  the Lord shall trouble them in his wrath, and fire shall devour
them.

20:11. Their fruit shalt thou destroy from the earth:  and their seed
from among the children of men.

20:12. For they have intended evils against thee:  they have devised
counsels which they have not been able to establish.

20:13. For thou shalt make them turn their back:  in thy remnants thou
shalt prepare their face.

In thy remnants thou shalt prepare their face. . .Or thou shalt set thy
remnants against their faces.  That is, thou shalt make them see what
punishments remain for them hereafter from thy justice.  Instead of
remnants, St. Jerome renders it funes, that is, cords or strings, viz.,
of the bow of divine justice, from which God directs his arrows against
the faces of his enemies.

20:14. Be thou exalted, O Lord, in thy own strength:  we will sing and
praise thy power.



Psalms Chapter 21


Deus Deus meus.

Christ's passion:  and the conversion of the Gentiles.

21:1. Unto the end, for the morning protection, a psalm for David.

21:2. O God my God, look upon me:  why hast thou forsaken me?  Far from
my salvation are the words of my sins.

The words of my sins. . .That is, the sins of the world, which I have
taken upon myself, cry out against me, and are the cause of all my
sufferings.

21:3. O my God, I shall cry by day, and thou wilt not hear:  and by
night, and it shall not be reputed as folly in me.

21:4. But thou dwellest in the holy place, the praise of Israel.

21:5. In thee have our fathers hoped:  they have hoped, and thou hast
delivered them.

21:6. They cried to thee, and they were saved:  they trusted in thee,
and were not confounded.

21:7. But I am a worm, and no man:  the reproach of men, and the outcast
of the people.

21:8. All they that saw me have laughed me to scorn:  they have spoken
with the lips, and wagged the head.

21:9. He hoped in the Lord, let him deliver him:  let him save him,
seeing he delighteth in him.

21:10. For thou art he that hast drawn me out of the womb:  my hope from
the breasts of my mother.

21:11. I was cast upon thee from the womb.  From my mother's womb thou
art my God,

21:12. Depart not from me.  For tribulation is very near:  for there is
none to help me.

21:13. Many calves have surrounded me:  fat bulls have besieged me.

21:14.They have opened their mouths against me, as a lion ravening and
roaring.

21:15. I am poured out like water; and all my bones are scattered.  My
heart is become like wax melting in the midst of my bowels.

21:16. My strength is dried up like a potsherd, and my tongue hath
cleaved to my jaws:  and thou hast brought me down into the dust of
death.

21:17. For many dogs have encompassed me:  the council of the malignant
hath besieged me.  They have dug my hands and feet.

21:18. They have numbered all my bones.  And they have looked and stared
upon me.

21:19. They parted my garments amongst them; and upon my vesture they
cast lots.

21:20. But thou, O Lord, remove not thy help to a distance from me;
look towards my defence.

21:21. Deliver, O God, my soul from the sword:  my only one from the
hand of the dog.

21:22. Save me from the lion's mouth; and my lowness from the horns of
the unicorns.

21:23. I will declare thy name to my brethren:  in the midst of the
church will I praise thee.

21:24. Ye that fear the Lord, praise him:  all ye the seed of Jacob,
glorify him.

21:25. Let all the seed of Israel fear him:  because he hath not
slighted nor despised the supplication of the poor man.  Neither hath he
turned away his face form me:  and when I cried to him he heard me.

21:26. With thee is my praise in a great church:  I will pay my vows in
the sight of them that fear him.

21:27. The poor shall eat and shall be filled:  and they shall praise
the Lord that seek him:  their hearts shall live for ever and ever.

21:28. All the ends of the earth shall remember, and shall be converted
to the Lord:  And all the kindreds of the Gentiles shall adore in his
sight.

21:29. For the kingdom is the Lord's; and he shall have dominion over
the nations.

21:30. All the fat ones of the earth have eaten and have adored:  all
they that go down to the earth shall fall before him.

21:31. And to him my soul shall live:  and my seed shall serve him.

21:32. There shall be declared to the Lord a generation to come:  and
the heavens shall shew forth his justice to a people that shall be
born, which the Lord hath made.



Psalms Chapter 22


Dominus regit me.

God's spiritual benefits to faithful souls.

22:1. A psalm for David.  The Lord ruleth me:  and I shall want nothing.

Ruleth me. . .In Hebrew, Is my shepherd, viz., to feed, guide, and
govern me.

22:2. He hath set me in a place of pasture.  He hath brought me up, on
the water of refreshment:

22:3. He hath converted my soul.  He hath led me on the paths of
justice, for his own name's sake.

22:4. For though I should walk in the midst of the shadow of death, I
will fear no evils, for thou art with me.  Thy rod and thy staff, they
have comforted me.

22:5. Thou hast prepared a table before me against them that afflict
me.  Thou hast anointed my head with oil; and my chalice which
inebreateth me, how goodly is it!

22:6. And thy mercy will follow me all the days of my life.  And that I
may dwell in the house of the Lord unto length of days.



Psalms Chapter 23


Domini est terra.

Who are they that shall ascend to heaven:  Christ's triumphant ascension
thither.

23:1. On the first day of the week, a psalm for David.  The earth is the
Lord's and the fulness thereof:  the world, and all they that dwell
therein.

23:2. For he hath founded it upon the seas; and hath prepared it upon
the rivers.

23:3. Who shall ascend into the mountain of the Lord:  or who shall
stand in his holy place?

23:4. The innocent in hands, and clean of heart, who hath not taken his
soul in vain, nor sworn deceitfully to his neighbour.

23:5. He shall receive a blessing from the Lord, and mercy from God his
Saviour.

23:6. This is the generation of them that seek him, of them that seek
the face of the God of Jacob.

23:7. Lift up your gates, O ye princes, and be ye lifted up, O eternal
gates:  and the King of Glory shall enter in.

23:8. Who is this King of Glory?  the Lord who is strong and mighty:  the
Lord mighty in battle.

23:9. Lift up your gates, O ye princes, and be ye lifted up, O eternal
gates:  and the King of Glory shall enter in.

23:10. Who is this King of Glory?  the Lord of hosts, he is the King of
Glory.



Psalms Chapter 24


Ad te, Domine, levavi.

A prayer for grace, mercy, and protection against our enemies.

24:1. Unto the end, a psalm for David.  To thee, O Lord, have I lifted
up my soul.

24:2. In thee, O my God, I put my trust; let me not be ashamed.

24:3. Neither let my enemies laugh at me:  for none of them that wait on
thee shall be confounded.

24:4. Let all them be confounded that act unjust things without cause.
Shew, O Lord, thy ways to me, and teach me thy paths.

24:5. Direct me in thy truth, and teach me; for thou art God my
Saviour; and on thee have I waited all the day long.

24:6. Remember, O Lord, thy bowels of compassion; and thy mercies that
are from the beginning of the world.

24:7. The sins of my youth and my ignorances do not remember.  According
to thy mercy remember thou me:  for thy goodness' sake, O Lord.

24:8. The Lord is sweet and righteous:  therefore he will give a law to
sinners in the way.

24:9. He will guide the mild in judgment:  he will teach the meek his
ways.

24:10. All the ways of the Lord are mercy and truth, to them that seek
after his covenant and his testimonies.

24:11. For thy name's sake, O Lord, thou wilt pardon my sin:  for it is
great.

24:12. Who is the man that feareth the Lord?  He hath appointed him a
law in the way he hath chosen.

24:13. His soul shall dwell in good things:  and his seed shall inherit
the land.

24:14. The Lord is a firmament to them that fear him:  and his covenant
shall be made manifest to them.

24:15. My eyes are ever towards the Lord:  for he shall pluck my feet
out of the snare.

24:16. Look thou upon me, and have mercy on me; for I am alone and
poor.

24:17. The troubles of my heart are multiplied:  deliver me from my
necessities.

24:18. See my abjection and my labour; and forgive me all my sins.

24:19. Consider my enemies for they are multiplied, and have hated me
with an unjust hatred.

24:20. Deep thou my soul, and deliver me:  I shall not be ashamed, for I
have hoped in thee.

24:21. The innocent and the upright have adhered to me:  because I have
waited on thee.

24:22. Deliver Israel, O God, from all his tribulations.



Psalms Chapter 25


Judica me, Domine.

David's prayer to God in his distress, to be delivered, that he may
come to worship him in his tabernacle.

25:1. Unto the end, a psalm for David.  Judge me, O Lord, for I have
walked in my innocence:  and I have put my trust in the Lord, and shall
not be weakened.

25:2. Prove me, O Lord, and try me; burn my reins and my heart.

25:3. For thy mercy is before my eyes; and I am well pleased with thy
truth.

25:4. I have not sat with the council of vanity:  neither will I go in
with the doers of unjust things.

25:5. I have hated the assembly of the malignant; and with the wicked I
will not sit.

25:6. I will wash my hands among the innocent; and will compass thy
altar, O Lord:

25:7. That I may hear the voice of thy praise:  and tell of all thy
wondrous works.

25:8. I have loved, O Lord, the beauty of thy house; and the place
where thy glory dwelleth.

25:9. Take not away my soul, O God, with the wicked:  nor my life with
bloody men:

25:10. In whose hands are iniquities:  their right hand is filled with
gifts.

25:11. But as for me, I have walked in my innocence:  redeem me, and
have mercy on me.

25:12. My foot hath stood in the direct way:  in the churches I will
bless thee, O Lord.



Psalms Chapter 26


Dominus illuminatio.

David's faith and hope in God.

26:1. The psalm of David before he was anointed.  The Lord is my light
and my salvation, whom shall I fear?  The Lord is the protector of my
life:  of whom shall I be afraid?

26:2. Whilst the wicked draw near against me, to eat my flesh.  My
enemies that trouble me, have themselves been weakened, and have
fallen.

26:3. If armies in camp should stand together against me, my heart
shall not fear.  If a battle should rise up against me, in this will I
be confident.

26:4. One thing I have asked of the Lord, this will I seek after; that
I may dwell in the house of the Lord all the days of my life.  That I
may see the delight of the Lord, and may visit his temple.

26:5. For he hath hidden me in his tabernacle; in the day of evils, he
hath protected me in the secret place of his tabernacle.

26:6. He hath exalted me upon a rock:  and now he hath lifted up my head
above my enemies.  I have gone round, and have offered up in his
tabernacle a sacrifice of jubilation:  I will sing, and recite a psalm
to the Lord.

26:7. Hear, O Lord, my voice, with which I have cried to thee:  have
mercy on me and hear me.

26:8. My heart hath said to thee:  My face hath sought thee:  thy face, O
Lord, will I still seek.

26:9. Turn not away thy face from me; decline not in thy wrath from thy
servant.  Be thou my helper, forsake me not; do not thou despise me, O
God my Saviour.

26:10. For my father and my mother have left me:  but the Lord hath
taken me up.

26:11. Set me, O Lord, a law in thy way, and guide me in the right
path, because of my enemies.

26:12. Deliver me not over to the will of them that trouble me; for
unjust witnesses have risen up against me; and iniquity hath lied to
itself.

26:13. I believe to see the good things of the Lord in the land of the
living.

26:14. Expect the Lord, do manfully, and let thy heart take courage,
and wait thou for the Lord.



Psalms Chapter 27


Ad te, Domine, clamabo.

David's prayer that his enemies may not prevail over him.

27:1. A psalm for David himself.  Unto thee will I cry, O Lord:  O my
God, be not thou silent to me:  lest if thou be silent to me, I become
like them that go down into the pit.

27:2. Hear, O Lord, the voice of my supplication, when I pray to thee;
when I lift up my hands to thy holy temple.

27:3. Draw me not away together with the wicked; and with the workers
of iniquity destroy me not:  Who speak peace with their neighbour, but
evils are in their hearts.

27:4. Give them according to their works, and according to the
wickedness of their inventions.  According to the works of their hands
give thou to them:  render to them their reward.

27:5. Because they have not understood the works of the Lord, and the
operations of his hands:  thou shalt destroy them, and shalt not build
them up.

27:6. Blessed be the Lord, for he hath heard the voice of my
supplication.

27:7. The Lord is my helper and my protector:  in him hath my heart
confided, and I have been helped.  And my flesh hath flourished again,
and with my will I will give praise to him.

27:8. The Lord is the strength of his people, and the protector of the
salvation of his anointed.

27:9. Save, O Lord, thy people, and bless thy inheritance:  and rule
them and exalt them for ever.



Psalms Chapter 28


Afferte Domino.

An invitation to glorify God, with a commemoration of his mighty works.

28:1. A psalm for David, at the finishing of the tabernacle.  Bring to
the Lord, O ye children of God:  bring to the Lord the offspring of
rams.

28:2. Bring to the Lord glory and honour:  bring to the Lord glory to
his name:  adore ye the Lord in his holy court.

28:3. The voice of the Lord is upon the waters; the God of majesty hath
thundered, The Lord is upon many waters.

28:4. The voice of the Lord is in power; the voice of the Lord in
magnificence.

28:5. The voice of the Lord breaketh the cedars:  yea, the Lord shall
break the cedars of Libanus.

28:6. And shall reduce them to pieces, as a calf of Libanus, and as the
beloved son of unicorns.

Shall reduce them to pieces, etc. . .In Hebrew, shall make them to skip
like a calf.  The psalmist here describes the effects of thunder (which
he calls the voice of the Lord) which sometimes breaks down the tallest
and strongest trees; and makes their broken branches skip, etc.  All
this is to be understood mystically of the powerful voice of God's word
in his church; which has broken the pride of the great ones of this
world, and brought many of them meekly and joyfully to submit their
necks to the sweet yoke of Christ.

28:7. The voice of the Lord divideth the flame of fire:

28:8. The voice of the Lord shaketh the desert:  and the Lord shall
shake the desert of Cades.

28:9. The voice of the Lord prepareth the stags:  and he will discover
the thick woods:  and in his temple all shall speak his glory.

28:10. The Lord maketh the flood to dwell:  and the Lord shall sit king
for ever.  The Lord will give strength to his people:  the Lord will
bless his people with peace.



Psalms Chapter 29


Exaltabo te, Domine.

David praiseth God for his deliverance, and his merciful dealings with
him.

29:1. A psalm of a canticle, at the dedication of David's house.

29:2. I will extol thee, O Lord, for thou hast upheld me:  and hast not
made my enemies to rejoice over me.

29:3. O Lord my God, I have cried to thee, and thou hast healed me.

29:4. Thou hast brought forth, O Lord, my soul from hell:  thou hast
saved me from them that go down into the pit.

29:5. Sing to the Lord, O ye his saints:  and give praise to the memory
of his holiness.

29:6. For wrath is in his indignation; and life in his good will.  In
the evening weeping shall have place, and in the morning gladness.

29:7. And in my abundance I said:  I shall never be moved.

29:8. O Lord, in thy favour, thou gavest strength to my beauty.  Thou
turnedst away thy face from me, and I became troubled.

29:9. To thee, O Lord, will I cry:  and I will make supplication to my
God.

29:10. What profit is there in my blood, whilst I go down to
corruption?  Shall dust confess to thee, or declare thy truth?

29:11. The Lord hath heard, and hath had mercy on me:  the Lord became
my helper.

29:12. Thou hast turned for me my mourning into joy:  thou hast cut my
sackcloth, and hast compassed me with gladness:

29:13. To the end that my glory may sing to thee, and I may not regret:
O Lord my God, I will give praise to thee for ever.



Psalms Chapter 30


In te, Domine, speravi.

A prayer of a just man under affliction.

30:1. Unto the end, a psalm for David, in an ecstasy.

30:2. In thee, O Lord, have I hoped, let me never be confounded:
deliver me in thy justice.

30:3. Bow down thy ear to me:  make haste to deliver me.  Be thou unto me
a God, a protector, and a house of refuge, to save me.

30:4. For thou art my strength and my refuge; and for thy name's sake
thou wilt lead me, and nourish me.

30:5. Thou wilt bring me out of this snare, which they have hidden for
me:  for thou art my protector.

30:6. Into thy hands I commend my spirit:  thou hast redeemed me, O
Lord, the God of truth.

30:7. Thou hast hated them that regard vanities, to no purpose.  But I
have hoped in the Lord:

30:8. I will be glad and rejoice in thy mercy.  For thou hast regarded
my humility, thou hast saved my soul out of distresses.

30:9. And thou hast not shut me up in the hands of the enemy:  thou hast
set my feet in a spacious place.

30:10. Have mercy on me, O Lord, for I am afflicted:  my eye is troubled
with wrath, my soul, and my belly:

30:11. For my life is wasted with grief:  and my years in sighs.  My
strength is weakened through poverty and my bones are disturbed.

30:12. I am become a reproach among all my enemies, and very much to my
neighbours; and a fear to my acquaintance.  They that saw me without
fled from me.

30:13. I am forgotten as one dead from the heart.  I am become as a
vessel that is destroyed.

30:14. For I have heard the blame of many that dwell round about.  While
they assembled together against me, they consulted to take away my
life.

30:15. But I have put my trust in thee, O Lord:  I said:  Thou art my
God.

30:16. My lots are in thy hands.  Deliver me out of the hands of my
enemies; and from them that persecute me.

30:17. Make thy face to shine upon thy servant; save me in thy mercy.

30:18. Let me not be confounded, O Lord, for I have called upon thee.
Let the wicked be ashamed, and be brought down to hell.

30:19. Let deceitful lips be made dumb.  Which speak iniquity against
the just, with pride and abuse.

30:20. O how great is the multitude of thy sweetness, O Lord, which
thou hast hidden for them that fear thee!  Which thou hast wrought for
them that hope in thee, in the sight of the sons of men.

30:21. Thou shalt hide them in the secret of thy face, from the
disturbance of men.  Thou shalt protect them in thy tabernacle from the
contradiction of tongues.

30:22. Blessed be the Lord, for he hath shewn his wonderful mercy to me
in a fortified city.

30:23. But I said in the excess of my mind:  I am cast away from before
thy eyes.  Therefore thou hast heard the voice of my prayer, when I
cried to thee.

30:24. O love the Lord, all ye his saints:  for the Lord will require
truth, and will repay them abundantly that act proudly.

30:25. Do ye manfully, and let your heart be strengthened, all ye that
hope in the Lord.



Psalms Chapter 31


Beati quorum.

The second penitential psalm.

31:1. To David himself, understanding.  Blessed are they whose
iniquities are forgiven, and whose sins are covered.

31:2. Blessed is the man to whom the Lord hath not imputed sin, and in
whose spirit there is no guile.

31:3. Because I was silent my bones grew old; whilst I cried out all
the day long.

Because I was silent, etc. . .That is, whilst I kept silence, by
concealing, or refusing to confess my sins, thy hand was heavy upon me,
etc.

31:4. For day and night thy hand was heavy upon me:  I am turned in my
anguish, whilst the thorn is fastened.

I am turned, etc. . .That is, I turn and roll about in my bed to seek
for ease in my pain whilst the thorn of thy justice pierces my flesh,
and sticks fast in me.  Or, I am turned:  that is, I am converted to
thee, my God, by being brought to a better understanding by thy
chastisements.  In the Hebrew it is, my moisture is turned into the
droughts of the summer.

31:5. I have acknowledged my sin to thee, and my injustice I have not
concealed.  I said I will confess against my self my injustice to the
Lord:  and thou hast forgiven the wickedness of my sin.

31:6. For this shall every one that is holy pray to thee in a
seasonable time.  And yet in a flood of many waters, they shall not come
nigh unto him.

31:7. Thou art my refuge from the trouble which hath encompassed me:  my
joy, deliver me from them that surround me.

31:8. I will give thee understanding, and I will instruct thee in this
way, in which thou shalt go:  I will fix my eyes upon thee.

31:9. Do not become like the horse and the mule, who have no
understanding.  With bit and bridle bind fast their jaws, who come not
near unto thee.

31:10. Many are the scourges of the sinner, but mercy shall encompass
him that hopeth in the Lord.

31:11. Be glad in the Lord, and rejoice, ye just, and glory, all ye
right of heart.



Psalms Chapter 32


Exultate, justi.

An exhortation to praise God, and to trust in him.

32:1. A psalm for David.  Rejoice in the Lord, O ye just:  praise
becometh the upright.

32:2. Give praise to the Lord on the harp; sing to him with the
psaltery, the instrument of ten strings.

32:3. Sing to him a new canticle, sing well unto him with a loud noise.

32:4. For the word of the Lord is right, and all his works are done
with faithfulness.

32:5. He loveth mercy and judgment; the earth is full of the mercy of
the Lord.

32:6. By the word of the Lord the heavens were established; and all the
power of them by the spirit of his mouth:

32:7. Gathering together the waters of the sea, as in a vessel; laying
up the depths in storehouses.

32:8. Let all the earth fear the Lord, and let all the inhabitants of
the world be in awe of him.

32:9. For he spoke and they were made:  he commanded and they were
created.

32:10. The Lord bringeth to nought the counsels of nations; and he
rejecteth the devices of people, and casteth away the counsels of
princes.

32:11. But the counsel of the Lord standeth for ever:  the thoughts of
his heart to all generations.

32:12. Blessed is the nation whose God is the Lord:  the people whom he
hath chosen for his inheritance.

32:13. The Lord hath looked from heaven:  he hath beheld all the sons of
men.

32:14. From his habitation which he hath prepared, he hath looked upon
all that dwell on the earth.

32:15. He who hath made the hearts of every one of them:  who
understandeth all their works.

32:16. The king is not saved by a great army:  nor shall the giant be
saved by his own great strength.

32:17. Vain is the horse for safety:  neither shall he be saved by the
abundance of his strength.

32:18. Behold the eyes of the Lord are on them that fear him:  and on
them that hope in his mercy.

32:19. To deliver their souls from death; and feed them in famine.

32:20. Our soul waiteth for the Lord:  for he is our helper and
protector.

32:21. For in him our heart shall rejoice:  and in his holy name we have
trusted.

32:22. Let thy mercy, O Lord, be upon us, as we have hooped in thee.



Psalms Chapter 33


Benedicam Dominum.

An exhortation to the praise, and service of God.

33:1. For David, when he changed his countenance before Achimelech, who
dismissed him, and he went his way.  [1 Kings 21.]

33:2. I will bless the Lord at all times, his praise shall be always in
my mouth.

33:3. In the Lord shall my soul be praised:  let the meek hear and
rejoice.

33:4. O magnify the Lord with me; and let us extol his name together.

33:5. I sought the Lord, and he heard me; and he delivered me from all
my troubles.

33:6. Come ye to him and be enlightened:  and your faces shall not be
confounded.

33:7. This poor man cried, and the Lord heard him:  and saved him out of
all his troubles.

33:8. The angel of the Lord shall encamp round about them that fear
him:  and shall deliver them.

33:9. O taste, and see that the Lord is sweet:  blessed is the man that
hopeth in him.

33:10. Fear the Lord, all ye his saints:  for there is no want to them
that fear him.

33:11. The rich have wanted, and have suffered hunger:  but they that
seek the Lord shall not be deprived of any good.

33:12. Come, children, hearken to me:  I will teach you the fear of the
Lord.

33:13. Who is the man that desireth life:  who liveth to see good days?

33:14. Keep thy tongue form evil, and thy lips from speaking guile.

33:15. Turn away from evil and do good:  seek after peace and pursue it.

33:16. The eyes of the Lord are upon the just:  and his ears unto their
prayers.

33:17. But the countenance of the Lord is against them that do evil
things:  to cut off the remembrance of them from the earth.

33:18. The just cried, and the Lord heard them:  and delivered them out
of all their troubles.

33:19. The Lord is nigh unto them that are of a contrite heart:  and he
will save the humble of spirit.

33:20. Many are the afflictions of the just; but out of them all will
the Lord deliver them.

33:21. The Lord is nigh unto them that are of a contrite heart:  and he
will save the humble of spirit.

33:22. The death of the wicked is very evil:  and they that hate the
just shall be guilty.

33:23. The Lord will redeem the souls of his servants:  and none of them
that trust in him shall offend.



Psalms Chapter 34


Judica, Domine, nocentes me.

David, in the person of Christ, prayeth against his persecutors:
prophetically foreshewing the punishments that shall fall upon them.

34:1. For David himself.  Judge thou, O Lord, them that wrong me:
overthrow them that fight against me.

34:2. Take hold of arms and shield:  and rise up to help me.

34:3. Bring out the sword, and shut up the way against them that
persecute me:  say to my soul:  I am thy salvation.

34:4. Let them be confounded and ashamed that seek after my soul.  Let
them be turned back and be confounded that devise evil against me.

34:5. Let them become as dust before the wind:  and let the angel of the
Lord straiten them.

34:6. Let their way become dark and slippery; and let the angel of the
Lord pursue them.

34:7. For without cause they have hidden their net for me unto
destruction:  without cause they have upbraided my soul.

34:8. Let the snare which he knoweth not come upon him:  and let the net
which he hath hidden catch him:  and into that very snare let them fall.

34:9. But my soul shall rejoice in the Lord; and shall be delighted in
his salvation.

34:10. All my bones shall say:  Lord, who is like to thee?  Who
deliverest the poor from the hand of them that are stronger than he;
the needy and the poor from them that strip him.

34:11. Unjust witnesses rising up have asked me things I knew not.

34:12. They repaid me evil for good:  to the depriving me of my soul.

34:13. But as for me, when they were troublesome to me, I was clothed
with haircloth.  I humbled my soul with fasting; and my prayer shall be
turned into my bosom.

34:14. As a neighbour and as an own brother, so did I please:  as one
mourning and sorrowful so was I humbled.

34:15. But they rejoiced against me, and came together:  scourges were
gathered together upon me, and I knew not.

34:16. They were separated, and repented not:  they tempted me, they
scoffed at me with scorn:  they gnashed upon me with their teeth.

34:17. Lord, when wilt thou look upon me?  rescue thou my soul from
their malice:  my only one from the lions.

34:18. I will give thanks to thee in a great church; I will praise thee
in a strong people.

34:19. Let not them that are my enemies wrongfully rejoice over me:  who
have hated me without cause, and wink with the eyes.

34:20. For they spoke indeed peaceably to me; and speaking in the anger
of the earth they devised guile.

34:21. And they opened their mouth wide against me; they said:  Well
done, well done, our eyes have seen it.

34:22. Thou hast seen, O Lord, be not thou silent:  O Lord, depart not
from me.

34:23. Arise, and be attentive to my judgment:  to my cause, my God, and
my Lord.

34:24. Judge me, O Lord my God according to thy justice, and let them
not rejoice over me.

34:25. Let them not say in their hearts:  It is well, it is well, to our
mind:  neither let them say:  We have swallowed him up.

34:26. Let them blush:  and be ashamed together, who rejoice at my
evils.  Let them be clothed with confusion and shame, who speak great
things against me.

34:27. Let them rejoice and be glad, who are well pleased with my
justice, and let them say always:  The Lord be magnified, who delights
in the peace of his servant.

34:28. And my tongue shall meditate thy justice, thy praise all the day
long.



Psalms Chapter 35


Dixit injustus.

The malice of sinners, and the goodness of God.

35:1. Unto the end, for the servant of God, David himself.

35:2. The unjust hath said within himself, that he would sin:  there is
no fear of God before his eyes.

35:3. For in his sight he hath done deceitfully, that his iniquity may
be found unto hatred.

Unto hatred. . .That is, hateful to God.

35:4. The words of his mouth are iniquity and guile:  he would not
understand that he might do well.

35:5. He hath devised iniquity on his bed, he hath set himself on every
way that is not good:  but evil he hath not hated.

35:6. O Lord, thy mercy is in heaven, and thy truth reacheth even to
the clouds.

35:7. Thy justice is as the mountains of God, thy judgments are a great
deep.  Men and beasts thou wilt preserve, O Lord:

35:8. O how hast thou multiplied thy mercy, O God!  But the children of
men shall put their trust under the covert of thy wings.

35:9. They shall be inebriated with the plenty of thy house; and thou
shalt make them drink of the torrent of thy pleasure.

35:10. For with thee is the fountain of life; and in thy light we shall
see light.

35:11. Extend thy mercy to them that know thee, and thy justice to them
that are right in heart.

35:12. Let not the foot of pride come to me, and let not the hand of
the sinner move me.

35:13. There the workers of iniquity are fallen, they are cast out, and
could not stand.



Psalms Chapter 36


Noli aemulari.

An exhortation to despise this world; and the short prosperity of the
wicked; and to trust in Providence.

36:1. Be not emulous of evildoers; nor envy them that work iniquity.

36:2. For they shall shortly wither away as grass, and as the green
herbs shall quickly fall.

36:3. Trust in the Lord, and do good, and dwell in the land, and thou
shalt be fed with its riches.

36:4. Delight in the Lord, and he will give thee the requests of thy
heart.

36:5. Commit thy way to the Lord, and trust in him, and he will do it.

36:6. And he will bring forth thy justice as the light, and thy
judgment as the noonday.

36:7. Be subject to the Lord and pray to him.  Envy not the man who
prospereth in his way; the man who doth unjust things.

36:8. Cease from anger, and leave rage; have no emulation to do evil.

36:9. For evildoers shall be cut off:  but they that wait upon the Lord,
they shall inherit the land.

36:10. For yet a little while, and the wicked shall not be:  and thou
shalt seek his place, and shalt not find it.

36:11. But the meek shall inherit the land, and shall delight in
abundance of peace.

36:12. The sinner shall watch the just man:  and shall gnash upon him
with his teeth.

36:13. But the Lord shall laugh at him:  for he foreseeth that his day
shall come.

36:14. The wicked have drawn out the sword:  they have bent their bow.
To cast down the poor and needy, to kill the upright of heart.

36:15. Let their sword enter into their own hearts, and let their bow
be broken.

36:16. Better is a little to the just, than the great riches of the
wicked.

36:17. For the arms of the wicked shall be broken in pieces; but the
Lord strengtheneth the just.

36:18. The Lord knoweth the days of the undefiled; and their
inheritance shall be for ever.

36:19. They shall not be confounded in the evil time; and in the days
of famine they shall be filled:

36:20. Because the wicked shall perish.  And the enemies of the Lord,
presently after they shall be honoured and exalted, shall come to
nothing and vanish like smoke.

36:21. The sinner shall borrow, and not pay again; but the just sheweth
mercy and shall give.

36:22. For such as bless him shall inherit the land:  but such as curse
him shall perish.

36:23. With the Lord shall the steps of a man be directed, and he shall
like well his way.

36:24. When he shall fall he shall not be bruised, for the Lord putteth
his hand under him.

36:25. I have been young and now am old; and I have not seen the just
forsaken, nor his seed seeking bread.

36:26. He sheweth mercy, and lendeth all the day long; and his seed
shall be in blessing.

36:27. Decline from evil and do good, and dwell for ever and ever.

36:28. For the Lord loveth judgment, and will not forsake his saints:
they shall be preserved for ever.  The unjust shall be punished, and the
seed of the wicked shall perish.

36:29. But the just shall inherit the land, and shall dwell therein for
evermore.

36:30. The mouth of the just shall meditate wisdom:  and his tongue
shall speak judgment.

36:31. The law of his God is in his heart, and his steps shall not be
supplanted.

36:32. The wicked watcheth the just man, and seeketh to put him to
death,

36:33. But the Lord will not leave him in his hands; nor condemn him
when he shall be judged.

36:34. Expect the Lord and keep his way:  and he will exalt thee to
inherit the land:  when the sinners shall perish thou shalt see.

36:35. I have seen the wicked highly exalted, and lifted up like the
cedars of Libanus.

36:36. And I passed by, and lo, he was not:  and I sought him and his
place was not found.

36:37. Keep innocence, and behold justice:  for there are remnants for
the peaceable man.

36:38. But the unjust shall be destroyed together:  the remnants of the
wicked shall perish.

36:39. But the salvation of the just is from the Lord, and he is their
protector in the time of trouble.

36:40. And the Lord will help them and deliver them:  and he will rescue
them from the wicked, and save them because they have hoped in him.



Psalms Chapter 37


Domine, ne in furore.

A prayer of a penitent for the remission of his sins.  The third
penitential psalm.

37:1. A psalm for David, for a remembrance of the sabbath.

For a remembrance. . .Viz., of our miseries and sins:  and to be sung on
the sabbath day.

37:2. Rebuke me not, O Lord, in thy indignation; nor chastise me in thy
wrath.

37:3. For thy arrows are fastened in me:  and thy hand hath been strong
upon me.

37:4. There is no health in my flesh, because of thy wrath:  there is no
peace for my bones, because of my sins.

37:5. For my iniquities are gone over my head:  and as a heavy burden
are become heavy upon me.

37:6. My sores are putrified and corrupted, because of my foolishness.

37:7. I am become miserable, and am bowed down even to the end:  I
walked sorrowful all the day long.

37:8. For my loins are filled with illusions; and there is no health in
my flesh.

37:9. I am afflicted and humbled exceedingly:  I roared with the
groaning of my heart.

37:10. Lord, all my desire is before thee, and my groaning is not
hidden from thee.

37:11. My heart is troubled, my strength hath left me, and the light of
my eyes itself is not with me.

37:12. My friends and my neighbours have drawn near, and stood against
me.  And they that were near me stood afar off:

37:13. And they that sought my soul used violence.  And they that sought
evils to me spoke vain things, and studied deceits all the day long.

37:14. But I, as a deaf man, heard not:  and as a dumb man not opening
his mouth.

37:15. And I became as a man that heareth not:  and that hath no
reproofs in his mouth.

37:16. For in thee, O Lord, have I hoped:  thou wilt hear me, O Lord my
God.

37:17. For I said:  Lest at any time my enemies rejoice over me:  and
whilst my feet are moved, they speak great things against me.

37:18. For I am ready for scourges:  and my sorrow is continually before
me.

37:19. For I will declare my iniquity:  and I will think for my sin.

37:20. But my enemies live, and are stronger than I:  and they that hate
me wrongfully are multiplied.

37:21. They that render evil for good, have detracted me, because I
followed goodness.

37:22. For sake me not, O Lord my God:  do not thou depart from me.

37:23. Attend unto my help, O Lord, the God of my salvation.



Psalms Chapter 38


Dixi custodiam.

A just man's peace and patience in his sufferings; considering the
vanity of the world, and the providence of God.

38:1. Unto the end, for Idithun himself, a canticle of David.

38:2. I said:  I will take heed to my ways:  that I sin not with my
tongue.  I have set a guard to my mouth, when the sinner stood against
me.

38:3. I was dumb, and was humbled, and kept silence from good things:
and my sorrow was renewed.

38:4. My heart grew hot within me:  and in my meditation a fire shall
flame out.

38:5. I spoke with my tongue:  O Lord, make me know my end.  And what is
the number of my days:  that I may know what is wanting to me.

38:6. Behold thou hast made my days measurable.  and my substance is as
nothing before thee.  And indeed all things are vanity:  every man
living.

38:7. Surely man passeth as an image:  yea, and he is disquieted in
vain.  He storeth up:  and he knoweth not for whom he shall gather these
things.

38:8. And now what is my hope?  is it not the Lord?  and my substance is
with thee.

38:9. Deliver thou me from all my iniquities:  thou hast made me a
reproach to the fool.

38:10. I was dumb, and I opened not my mouth, because thou hast done
it.

38:11. Remove thy scourges from me.  The strength of thy hand hath made
me faint in rebukes:

38:12. Thou hast corrected man for iniquity.  And thou hast made his
soul to waste away like a spider:  surely in vain is any man disquieted.

38:13. Hear my prayer, O Lord, and my supplication:  give ear to my
tears.  Be no silent:  for I am a stranger with thee, and a sojourner as
all my fathers were.

38:14. O forgive me, that I may be refreshed, before I go hence, and be
no more.



Psalms Chapter 39


Expectans expectavi.

Christ's coming, and redeeming mankind.

39:1. Unto the end, a psalm for David himself.

39:2. With expectation I have waited for the Lord, and he was attentive
to me.

39:3. And he heard my prayers, and brought me out of the pit of misery
and the mire of dregs.  And he set my feet upon a rock, and directed my
steps.

39:4. And he put a new canticle into my mouth, a song to our God.  Many
shall see, and shall fear:  and they shall hope in the Lord.

39:5. Blessed is the man whose trust is in the name of the Lord; and
who hath not had regard to vanities, and lying follies.

39:6. Thou hast multiplied thy wonderful works, O Lord my God:  and in
thy thoughts there is no one like to thee.  I have declared and I have
spoken they are multiplied above number.

39:7. Sacrifice and oblation thou didst not desire; but thou hast
pierced ears for me.  Burnt offering and sin offering thou didst not
require:

39:8. Then said I, Behold I come.  In the head of the book it is written
of me

39:9. That I should do thy will:  O my God, I have desired it, and thy
law in the midst of my heart.

39:10. I have declared thy justice in a great church, lo, I will not
restrain my lips:  O Lord, thou knowest it.

39:11. I have not hid thy justice within my heart:  I have declared thy
truth and thy salvation.  I have not concealed thy mercy and thy truth
from a great council.

39:12. Withhold not thou, O Lord, thy tender mercies from me:  thy mercy
and thy truth have always upheld me.

39:13. For evils without number have surrounded me; my iniquities have
overtaken me, and I was not able to see.  They are multiplied above the
hairs of my head:  and my heart hath forsaken me.

My iniquities. . .That is, the sins of all mankind, which I have taken
upon me.

39:14. Be pleased, O Lord, to deliver me.  look down, O Lord, to help
me.

39:15. Let them be confounded and ashamed together, that seek after my
soul to take it away.  Let them be turned backward and be ashamed that
desire evils to me.

39:16. Let them immediately bear their confusion, that say to me:  'T is
well, t' is well.

'T is well. . .The Hebrew here is an interjection of insult and
derision, like the Vah.  Matt. 27.49.

39:17. Let all that seek thee rejoice and be glad in thee:  and let such
as love thy salvation say always:  The Lord be magnified.

39:18. But I am a beggar and poor:  the Lord is careful for me.  Thou art
my helper and my protector:  O my God, be not slack.



Psalms Chapter 40


Beatus qui intelligit.

The happiness of him that shall believe in Christ; notwithstanding the
humility and poverty in which he shall come:  the malice of his enemies,
especially of the traitor Judas.

40:1. Unto the end, a psalm for David himself.

40:2. Blessed is he that understandeth concerning the needy and the
poor:  the Lord will deliver him in the evil day.

40:3. The Lord preserve him and give him life, and make him blessed
upon the earth:  and deliver him not up to the will of his enemies.

40:4. The Lord help him on his bed of sorrow:  thou hast turned all his
couch in his sickness.

40:5. I said:  O Lord, be thou merciful to me:  heal my soul, for I have
sinned against thee.

40:6. My enemies have spoken evils against me:  when shall he die and
his name perish?

40:7. And if he came in to see me, he spoke vain things:  his heart
gathered together iniquity to itself.  He went out and spoke to the same
purpose.

40:8. All my enemies whispered together against me:  they devised evils
to me.

40:9. They determined against me an unjust word:  shall he that sleepeth
rise again no more?

40:10. For even the man of my peace, in whom I trusted, who ate my
bread, hath greatly supplanted me.

40:11. But thou, O Lord, have mercy on me, and raise my up again:  and I
will requite them.

40:12. By this I know, that thou hast had a good will for me:  because
my enemy shall not rejoice over me.

40:13. But thou hast upheld me by reason of my innocence:  and hast
established me in thy sight for ever.

40:14. Blessed be the Lord the God of Israel from eternity to eternity.
So be it.  So be it.



Psalms Chapter 41


Quemadmodum desiderat.

The fervent desire of the just after God:  hope in afflictions.

41:1. Unto the end, understanding for the sons of Core.

41:2. As the hart panteth after the fountains of water; so my soul
panteth after thee, O God.

41:3. My soul hath thirsted after the strong living God; when shall I
come and appear before the face of God?

41:4. My tears have been my bread day and night, whilst it is said to
me daily:  Where is thy God?

41:5. These things I remembered, and poured out my soul in me:  for I
shall go over into the place of the wonderful tabernacle, even to the
house of God:  With the voice of joy and praise; the noise of one
feasting.

41:6. Why art thou sad, O my soul?  and why dost thou trouble me?  Hope
in God, for I will still give praise to him:  the salvation of my
countenance,

41:7. And my God.  My soul is troubled within my self:  therefore will I
remember thee from the land of Jordan and Hermoniim, from the little
hill.

41:8. Deep calleth on deep, at the noise of thy flood-gates.  All thy
heights and thy billows have passed over me.

41:9. In the daytime the Lord hath commanded his mercy; and a canticle
to him in the night.  With me is prayer to the God of my life.

41:10. I will say to God:  Thou art my support.  Why hast thou forgotten
me?  and why go I mourning, whilst my enemy afflicteth me?

41:11. Whilst my bones are broken, my enemies who trouble me have
reproached me; Whilst they say to me day by day:  Where is thy God?

41:12. Why art thou cast down, O my soul?  and why dost thou disquiet
me?  Hope thou in God, for I will still give praise to him:  the
salvation of my countenance, and my God.



Psalms Chapter 42


Judica me, Deus.

The prophet aspireth after the temple and altar of God.

42:1. A psalm for David.  Judge me, O God, and distinguish my cause from
the nation that is not holy:  deliver me from the unjust and deceitful
man.

42:2. For thou art God my strength:  why hast thou cast me off?  and why
do I go sorrowful whilst the enemy afflicteth me?

42:3. Sent forth thy light and thy truth:  they have conducted me, and
brought me unto thy holy hill, and into thy tabernacles.

42:4. And I will go in to the altar of God:  to God who giveth joy to my
youth.

42:5. To thee, O God my God, I will give praise upon the harp:  why art
thou sad, O my soul?  and why dost thou disquiet me?

42:6. Hope in God, for I will still give praise to him:  the salvation
of my countenance, and my God.



Psalms Chapter 43


Deus auribus nostris.

The church commemorates former favours, and present afflictions; under
which she prays for succour.

43:1. Unto the end, for the sons of Core, to give understanding.

43:2. We have heard, O God, with our ears:  our fathers have declared to
us, The work thou hast wrought in their days, and in the days of old.

43:3. Thy hand destroyed the Gentiles, and thou plantedst them:  thou
didst afflict the people and cast them out.

43:4. For they got not the possession of the land by their own sword:
neither did their own arm save them.  But thy right hand and thy arm,
and the light of thy countenance:  because thou wast pleased with them.

43:5. Thou art thyself my king and my God, who commandest the saving of
Jacob.

43:6. Through thee we will push down our enemies with the horn:  and
through thy name we will despise them that rise up against us.

43:7. For I will not trust in my bow:  neither shall my sword save me.

43:8. But thou hast saved us from them that afflict us:  and hast put
them to shame that hate us.

43:9. In God shall we glory all the day long:  and in thy name we will
give praise for ever.

43:10. But now thou hast cast us off, and put us to shame:  and thou , O
God, wilt not go out with our armies.

43:11. Thou hast made us turn our back to our enemies:  and they that
hated us plundered for themselves.

43:12. Thou hast given us up like sheep to be eaten:  thou hast
scattered us among the nations.

43:13. Thou hast sold thy people for no price:  and there was no
reckoning in the exchange of them.

43:14. Thou hast made us a reproach to our neighbours, a scoff and
derision to them that are round about us.

43:15. Thou hast made us a byword among the Gentiles:  a shaking of the
head among the people.

43:16. All the day long my shame is before me:  and the confusion of my
face hath covered me,

43:17. At the voice of him that reproacheth and detracteth me:  at the
face of the enemy and persecutor.

43:18. All these things have come upon us, yet we have not forgotten
thee:  and we have not done wickedly in thy covenant.

43:19. And our heart hath not turned back:  neither hast thou turned
aside our steps from thy way.

43:20. For thou hast humbled us in the place of affliction:  and the
shadow of death hath covered us.

43:21. If we have forgotten the name of our God, and if we have spread
forth our hands to a strange god:

43:22. Shall not God search out these things:  for he knoweth the
secrets of the heart.  Because for thy sake we are killed all the day
long:  we are counted as sheep for the slaughter.

43:23. Arise, why sleepest thou, O Lord?  arise, and cast us not off to
the end.

43:24. Why turnest thou thy face away?  and forgettest our want and our
trouble?

43:25. For our soul is humbled down to the dust:  our belly cleaveth to
the earth.

43:26. Arise, O Lord, help us and redeem us for thy name's sake.



Psalms Chapter 44


Eructavit cor meum.

The excellence of Christ's kingdom, and the endowments of his church.

44:1. Unto the end, for them that shall be changed, for the sons of
Core, for understanding.  A canticle for the Beloved.

For them that shall be changed. . .i.e., for souls happily changed, by
being converted to God.--Ibid.  The Beloved. . .Viz., Our Lord Jesus
Christ.

44:2. My heart hath uttered a good word:  I speak my works to the king:
My tongue is the pen of a scrivener that writeth swiftly.

44:3. Thou art beautiful above the sons of men:  grace is poured abroad
in thy lips; therefore hath God blessed thee for ever.

44:4. Gird thy sword upon thy thigh, O thou most mighty.

44:5. With thy comeliness and thy beauty set out, proceed prosperously,
and reign.  Because of truth and meekness and justice:  and thy right
hand shall conduct thee wonderfully.

44:6. Thy arrows are sharp:  under thee shall people fall, into the
hearts of the king's enemies.

44:7. Thy throne, O God, is forever and ever:  the sceptre of thy
kingdom is a sceptre of uprightness.

44:8. Thou hast loved justice, and hated iniquity:  therefore God, thy
God, hath anointed thee with the oil of gladness above thy fellows.

44:9. Myrrh and stacte and cassia perfume thy garments, from the ivory
houses:  out of which

44:10. The daughters of kings have delighted thee in thy glory.  The
queen stood on thy right hand, in gilded clothing; surrounded with
variety.

44:11. Hearken, O daughter, and see, and incline thy ear:  and forget
thy people and thy father's house.

44:12. And the king shall greatly desire thy beauty; for he is the Lord
thy God, and him they shall adore.

44:13. And the daughters of Tyre with gifts, yea, all the rich among
the people, shall entreat thy countenance.

44:14. All the glory of the king's daughter is within in golden
borders,

44:15. Clothed round about with varieties.  After her shall virgins be
brought to the king:  her neighbours shall be brought to thee.

44:16. They shall be brought with gladness and rejoicing:  they shall be
brought into the temple of the king.

44:17. Instead of thy fathers, sons are born to thee:  thou shalt make
them princes over all the earth.

44:18. They shall remember thy name throughout all generations.
Therefore shall people praise thee for ever; yea, for ever and ever.



Psalms Chapter 45


Deus noster refugium.

The church in persecution trusteth in the protection of God.

45:1. Unto the end, for the sons of Core, for the hidden.

45:2. Our God is our refuge and strength:  a helper in troubles, which
have found us exceedingly.

45:3. Therefore we will not fear, when the earth shall be troubled; and
the mountains shall be removed into the heart of the sea.

45:4. Their waters roared and were troubled:  the mountains were
troubled with his strength.

45:5. The stream of the river maketh the city of God joyful:  the most
High hath sanctified his own tabernacle.

45:6. God is in the midst thereof, it shall not be moved:  God will help
it in the morning early.

45:7. Nations were troubled, and kingdoms were bowed down:  he uttered
his voice, the earth trembled.

45:8. The Lord of armies is with us:  the God of Jacob is our protector.

45:9. Come and behold ye the works of the Lord:  what wonders he hath
done upon earth,

45:10. Making wars to cease even to the end of the earth.  He shall
destroy the bow, and break the weapons:  and the shield he shall burn in
the fire.

45:11. Be still and see that I am God; I will be exalted among the
nations, and I will be exalted in the earth.

45:12. The Lord of armies is with us:  the God of Jacob is our
protector.



Psalms Chapter 46


Omnes gentes, plaudite.

The Gentiles are invited to praise God for the establishment of the
kingdom of Christ.

46:1. Unto the end, for the sons of Core.

46:2. O clap your hands, all ye nations:  shout unto God with the voice
of joy,

46:3. For the Lord is high, terrible:  a great king over all the earth.

46:4. He hath subdued the people under us; and the nations under our
feet.

46:5. He hath chosen for us his inheritance, the beauty of Jacob which
he hath love.

46:6. God is ascended with jubilee, and the Lord with the sound of
trumpet.

46:7. Sing praises to our God, sing ye:  sing praises to our king, sing
ye.

46:8. For God is the king of all the earth:  sing ye wisely.

46:9. God shall reign over the nations:  God sitteth on his holy throne.

46:10. The princes of the people are gathered together, with the God of
Abraham:  for the strong gods of the earth are exceedingly exalted.



Psalms Chapter 47


Magnus Dominus.

God is greatly to be praised for the establishment of his church.

47:1. A psalm of a canticle, for the sons of Core, on the second day of
the week.

47:2. Great is the Lord, and exceedingly to be praised in the city of
our God, in his holy mountain.

47:3. With the joy of the whole earth is mount Sion founded, on the
sides of the north, the city of the great king.

47:4. In her houses shall God be known, when he shall protect her.

47:5. For behold the kings of the earth assembled themselves:  they
gathered together.

47:6. So they saw, and they wondered, they were troubled, they were
moved:

47:7. Trembling took hold of them.  There were pains as of a woman in
labour.

47:8. With a vehement wind thou shalt break in pieces the ships of
Tharsis.

47:9. As we have heard, so have we seen, in the city of the Lord of
hosts, in the city of our God:  God hath founded it for ever.

47:10. We have received thy mercy, O God, in the midst of thy temple.

47:11. According to thy name, O God, so also is thy praise unto the
ends of the earth:  thy right hand is full of justice.

47:12. Let mount Sion rejoice, and the daughters of Juda be glad;
because of thy judgments, O Lord.

47:13. Surround Sion, and encompass her:  tell lye in her towers.

47:14. Set your hearts on her strength; and distribute her houses, that
ye may relate it in another generation.

47:15. For this is God, our God unto eternity, and for ever and ever:
he shall rule us for evermore.



Psalms Chapter 48


Audite haec, omnes gentes.

The folly of worldlings, who live on in sin, without thinking of death
or hell.

48:1. Unto the end, a psalm for the sons of Core.

48:2. Hear these things, all ye nations:  give ear, all ye inhabitants
of the world.

48:3. All you that are earthborn, and you sons of men:  both rich and
poor together.

48:4. My mouth shall speak wisdom:  and the meditation of my heart
understanding.

48:5. I will incline my ear to a parable; I will open my proposition on
the psaltery.

48:6. Why shall I fear in the evil day?  the iniquity of my heel shall
encompass me.

The iniquity of my heel. . .That is, the iniquity of my steps or ways:
or the iniquity of my pride, with which as with the heel, I have
spurned and kicked at my neighbours:  or the iniquity of my heel, that
is, the iniquity in which I shall be found in death.  The meaning of
this verse is, Why should I now indulge those passions and sinful
affections, or commit now those sins, which will cause me so much fear
and anguish in the evil day; when the sorrows of death shall compass
me, and the perils of hell shall find me?

48:7. They that trust in their own strength, and glory in the multitude
of their riches,

They that trust, etc. . .As much as to say, let them fear that trust in
their strength or riches:  for they have great reason to fear:  seeing no
brother or other man, how much a friend soever, can by any price or
labour rescue them from death.

48:8. No brother can redeem, nor shall man redeem:  he shall not give to
God his ransom,

48:9. Nor the price of the redemption of his soul:  and shall labour for
ever,

And shall labour for ever, etc. . .This seems to be a continuation of
the foregoing sentence:  as much as to say no man can by any price or
ransom prolong his life, that so he may still continue to labour here,
and live to the end of the world.  Others understand it of the eternal
sorrows, and dying life of hell, which is the dreadful consequence of
dying in sin.

48:10. And shall still live unto the end.

48:11. He shall not see destruction, when he shall see the wise dying:
the senseless and the fool shall perish together:  And they shall leave
their riches to strangers:

He shall not see destruction, etc. . .Or, shall he not see destruction?
As much as to say, however thoughtless he may be of his death, he must
not expect to escape; when even the wise and the good are not exempt
from dying.

48:12. And their sepulchres shall be their houses for ever.  Their
dwelling places to all generations:  they have called their lands by
their names.

They have called, etc. . .That is, they have left their names on their
graves, which alone remain of their lands.

48:13. And man when he was in honour did not understand; he is compared
to senseless beasts, and is become like to them.

48:14. This way of theirs is a stumblingblock to them:  and afterwards
they shall delight in their mouth.

They shall delight in their mouth. . .Notwithstanding the wretched way
in which they walk, they shall applaud themselves with their mouths,
and glory in their doings.

48:15. They are laid in hell like sheep:  death shall feed upon them.
And the just shall have dominion over them in the morning; and their
help shall decay in hell from their glory.

In the morning. . .That is, in the resurrection to a new life; when the
just shall judge and condemn the wicked.  Ibid.  From their
glory. . .That is, when their short-lived glory in this world shall be
past, and be no more.

48:16. But God will redeem my soul from the hand of hell, when he shall
receive me.

48:17. Be not thou afraid, when a man shall be made rick, and when the
glory of his house shall be increased.

48:18. For when he shall die he shall take nothing away; nor shall his
glory descend with him.

48:19. For in his lifetime his soul will be blessed:  and he will praise
thee when thou shalt do well to him.

48:20. He shall go in to the generations of his fathers:  and he shall
never see light.

48:21. Man when he was in honour did not understand:  he hath been
compared to senseless beasts, and made like to them.



Psalms Chapter 49


Deus deorum.

The coming of Christ:  who prefers virtue and inward purity before the
blood of victims.

49:1. A psalm for Asaph.  The God of gods, the Lord hath spoken:  and he
hath called the earth.  From the rising of the sun, to the going down
thereof:

49:2. Out of Sion the loveliness of his beauty.

49:3. God shall come manifestly:  our God shall come, and shall not keep
silence.  A fire shall burn before him:  and a mighty tempest shall be
round about him.

49:4. He shall call heaven from above, and the earth, to judge his
people.

49:5. Gather ye together his saints to him:  who set his covenant before
sacrifices.

49:6. And the heavens shall declare his justice:  for God is judge.

49:7. Hear, O my people, and I will speak:  O Israel, and I will testify
to thee:  I am God, thy God.

49:8. I will not reprove thee for thy sacrifices:  and thy burnt
offerings are always in my sight.

49:9. I will not take calves out of thy house:  nor he goats out of thy
flocks.

49:10. For all the beasts of the woods are mine:  the cattle on the
hills, and the oxen.

49:11. I know all the fowls of the air:  and with me is the beauty of
the field.

49:12. If I should be hungry, I would not tell thee:  for the world is
mine, and the fulness thereof.

49:13. Shall I eat the flesh of bullocks?  or shall I drink the blood of
goats?

49:14. Offer to God the sacrifice of praise:  and pay thy vows to the
most High.

49:15. And call upon me in the day of trouble:  I will deliver thee, and
thou shalt glorify me.

49:16. But to the sinner God hath said:  Why dost thou declare my
justices, and take my covenant in thy mouth?

49:17. Seeing thou hast hated discipline:  and hast cast my words behind
thee.

49:18. If thou didst see a thief thou didst run with him:  and with
adulterers thou hast been a partaker.

49:19. Thy mouth hath abounded with evil, and thy tongue framed
deceits.

49:20. Sitting thou didst speak against thy brother, and didst lay a
scandal against thy mother's son:

49:21. These things hast thou done, and I was silent.  Thou thoughtest
unjustly that I should be like to thee:  but I will reprove thee, and
set before thy face.

49:22. Understand these things, you that forget God; lest he snatch you
away, and there be none to deliver you.

49:23. The sacrifice of praise shall glorify me:  and there is the way
by which I will shew him the salvation of God.



Psalms Chapter 50


Miserere.

The repentance and confession of David after his sin.  The fourth
penitential psalm.

50:1. Unto the end, a psalm of David,

50:2. When Nathan the prophet came to him, after he had sinned with
Bethsabee.  [2 Kings 12.]

50:3. Have mercy on me, O God, according to thy great mercy.  And
according to the multitude of thy tender mercies blot out my iniquity.

50:4. Wash me yet more from my iniquity, and cleanse me from my sin.

50:5. For I know my iniquity, and my sin is always before me.

50:6. To thee only have I sinned, and have done evil before thee:  that
thou mayst be justified in thy words, and mayst overcome when thou art
judged.

50:7. For behold I was conceived in iniquities; and in sins did my
mother conceive me.

50:8. For behold thou hast loved truth:  the uncertain and hidden things
of thy wisdom thou hast made manifest to me.

50:9. Thou shalt sprinkle me with hyssop, and I shall be cleansed:  thou
shalt wash me, and I shall be made whiter than snow.

50:10. To my hearing thou shalt give joy and gladness:  and the bones
that have been humbled shall rejoice.

50:11. Turn away thy face from my sins, and blot out all my iniquities.

50:12. Create a clean heart in me, O God:  and renew a right spirit
within my bowels.

50:13. Cast me not away from thy face; and take not thy holy spirit
from me.

50:14. Restore unto me the joy of thy salvation, and strengthen me with
a perfect spirit.

50:15. I will teach the unjust thy ways:  and the wicked shall be
converted to thee.

50:16. Deliver me from blood, O God, thou God of my salvation:  and my
tongue shall extol thy justice.

50:17. O Lord, thou wilt open my lips:  and my mouth shall declare thy
praise.

50:18. For if thou hadst desired sacrifice, I would indeed have given
it:  with burnt offerings thou wilt not be delighted.

50:19. A sacrifice to God is an afflicted spirit:  a contrite and
humbled heart, O God, thou wilt not despise.

50:20. Deal favourably, O Lord, in thy good will with Sion; that the
walls of Jerusalem may be built up.

50:21. Then shalt thou accept the sacrifice of justice, oblations and
whole burnt offerings:  then shall they lay calves upon thy altar.



Psalms Chapter 51


Quid gloriaris.

David condemneth the wickedness of Doeg, and foretelleth his
destruction.

51:1. Unto the end, understanding for David,

51:2. When Doeg the Edomite came and told Saul:  David went to the house
of Achimelech.

51:3. Why dost thou glory in malice, thou that art mighty in iniquity?

51:4. All the day long thy tongue hath devised injustice:  as a sharp
razor, thou hast wrought deceit.

51:5. Thou hast loved malice more than goodness:  and iniquity rather
than to speak righteousness.

51:6. Thou hast loved all the words of ruin, O deceitful tongue.

51:7. Therefore will God destroy thee for ever:  he will pluck thee out,
and remove thee from thy dwelling place:  and thy root out of the land
of the living.

51:8. The just shall see and fear, and shall laugh at him, and say:

51:9. Behold the man that made not God his helper:  But trusted in the
abundance of his riches:  and prevailed in his vanity.

51:10. But I, as a fruitful olive tree in the house of God, have hoped
in the mercy of God for ever, yea for ever and ever.

51:11. I will praise thee for ever, because thou hast done it:  and I
will wait on thy name, for it is good in the sight of thy saints.



Psalms Chapter 52


Dixit insipiens.

The general corruption of man before the coming of Christ.

52:1. Unto the end, for Maeleth, understandings to David.  The fool said
in his heart:  There is no God.

Maeleth. . .Or Machalath.  A musical instrument, or a chorus of
musicians, for St. Jerome renders it, per chorum.

52:2. They are corrupted, and become abominable in iniquities:  there is
none that doth good.

52:3. God looked down from heaven on the children of men:  to see if
there were any that did understand, or did seek God.

52:4. All have gone aside, they are become unprofitable together, there
is none that doth good, no not one.

52:5. Shall not all the workers of iniquity know, who eat up my people
as they eat bread?

52:6. They have not called upon God:  there have they trembled for fear,
where there was no fear.  For God hath scattered the bones of them that
please men:  they have been confounded, because God hath despised them.

God hath scattered the bones, etc. . .That is, God has brought to
nothing the strength of all those that seek to please men, to the
prejudice of their duty to their Maker.

52:7. Who will give out of Sion the salvation of Israel?  when God shall
bring back the captivity of his people, Jacob shall rejoice, and Israel
shall be glad.



Psalms Chapter 53


Deus, in nomine tuo.

A prayer for help in distress.

53:1. Unto the end, in verses, understanding for David.

53:2. When the en of Ziph had come and said to Saul:  Is not David
hidden with us?  [1 Kings 23.19]

53:3. Save me, O God, by thy name, and judge me in thy strength.

53:4. O God, hear my prayer:  give ear to the words of my mouth.

53:5. For strangers have risen up against me; and the mighty have
sought after my soul:  and they have not set God before their eyes.

53:6. For behold God is my helper:  and the Lord is the protector of my
soul.

53:7. Turn back the evils upon my enemies; and cut them off in thy
truth.

53:8. I will freely sacrifice to thee, and will give praise, O God, to
thy name:  because it is good:

53:9. For thou hast delivered me out of all trouble:  and my eye hath
looked down upon my enemies.



Psalms Chapter 54


Exaudi, Deus.

A prayer of a just man under persecution from the wicked.  It agrees to
Christ persecuted by the Jews, and betrayed by Judas.

54:1. Unto the end, in verses, understanding for David.

54:2. Hear, O God, my prayer, and despise not my supplication:

54:3. Be attentive to me and hear me.  I am grieved in my exercise; and
am troubled,

54:4. At the voice of the enemy, and at the tribulation of the sinner.
For they have cast iniquities upon me:  and in wrath they were
troublesome to me.

54:5. My heart is troubled within me:  and the fear of death is fallen
upon me.

54:6. Fear and trembling are come upon me:  and darkness hath covered
me.

54:7. And I said:  Who will give me wings like a dove, and I will fly
and be at rest?

54:8. Lo, I have gone far off flying away; and I abode in the
wilderness.

54:9. I waited for him that hath saved me from pusillanimity of spirit,
and a storm.

54:10. Cast down, O Lord, and divide their tongues; for I have seen
iniquity and contradiction in the city.

54:11. Day and night shall iniquity surround it upon its walls:  and in
the midst thereof are labour,

54:12. And injustice.  And usury and deceit have not departed from its
streets.

54:13. For if my enemy had reviled me, I would verily have borne with
it.  And if he that hated me had spoken great things against me, I would
perhaps have hidden my self from him.

54:14. But thou a man of one mind, my guide, and my familiar,

54:15. Who didst take sweetmeats together with me:  in the house of God
we walked with consent.

54:16. Let death come upon them, and let them go down alive into hell.
For there is wickedness in their dwellings:  in the midst of them.

Let death, etc. . .This, and such like imprecations which occur in the
psalms, are delivered prophetically; that is, by way of foretelling the
punishments which shall fall upon the wicked from divine justice, and
approving the righteous ways of God:  but not by way of ill will, or
uncharitable curses, which the law of God disallows.

54:17. But I have cried to God:  and the Lord will save me.

54:18. Evening and morning, and at noon I will speak and declare:  and
he shall hear my voice.

54:19. He shall redeem my soul in peace from them that draw near to me:
for among many they were with me.

Among many, etc. . .That is, they that drew near to attack me were many
in company all combined to fight against me.

54:20. God shall hear, and the Eternal shall humble them.  For there is
no change with them, and they have not feared God:

54:21. He hath stretched forth his hand to repay.  They have defiled his
covenant,

54:22. They are divided by the wrath of his countenance, and his heart
hath drawn near.  His words are smoother than oil, and the same are
darts.

They are divided, etc. . .Dispersed, scattered, and brought to nothing,
by the wrath of God; who looks with indignation on their wicked and
deceitful ways.

54:23. Cast thy care upon the Lord, and he shall sustain thee:  he shall
not suffer the just to waver for ever.

54:24. But thou, O God, shalt bring them down into the pit of
destruction.  Bloody and deceitful men shall not live out half their
days; but I will trust in thee, O Lord.



Psalms Chapter 55


Miserere mei, Deus.

A prayer of David in danger and distress.

55:1. Unto the end, for a people that is removed at a distance form the
sanctuary:  for David, for an inscription of a title (or pillar) when
the Philistines held him in Geth.

55:2. Have mercy on me, O God, for man hath trodden me under foot; all
the day long he hath afflicted me fighting against me.

55:3. My enemies have trodden on me all the day long; for they are many
that make war against me.

55:4. From the height of the day I shall fear:  but I will trust in
thee.

The height of the day. . .That is, even at noonday, when the sun is the
highest, I am still in danger.

55:5. In God I will praise my words, in God I have put my trust:  I will
not fear what flesh can do against me.

My words. . .The words or promises God has made in my favour.

55:6. All the day long they detested my words:  all their thoughts were
against me unto evil.

55:7. They will dwell and hide themselves:  they will watch my heel.  As
they have waited for my soul,

55:8. For nothing shalt thou save them:  in thy anger thou shalt break
the people in pieces.  O God,

For nothing shalt thou save them. . .That is, since they lie in wait to
ruin my soul, thou shalt for no consideration favour or assist them,
but execute thy justice upon them.

55:9. I have declared to thee my life:  thou hast set me tears in thy
sight, As also in thy promise.

55:10. Then shall my enemies be turned back.  In what day soever I shall
call upon thee, behold I know thou art my God.

55:11. In God will I praise the word, in the Lord will I praise his
speech.  In God have I hoped, I will not fear what man can do to me.

55:12. In me, O God, are vows to thee, which I will pay, praises to
thee:

55:13. Because thou hast delivered my soul from death, my feet from
falling:  that I may please in the sight of God, in the light of the
living.



Psalms Chapter 56


Miserere mei, Deus.  The prophet prays in his affliction, and praises
God for his delivery.

56:1. Unto the end, destroy not, for David, for an inscription of a
title, when he fled from Saul into the cave.  [1 Kings 24.]

Destroy not. . .Suffer me not to be destroyed.

56:2. Have mercy on me, O God, have mercy on me:  for my soul trusteth
in thee.  And in the shadow of thy wings will I hope, until iniquity
pass away.

56:3. I will cry to God the most high; to God who hath done good to me.

56:4. He hath sent from heaven and delivered me:  he hath made them a
reproach that trod upon me.  God hath sent his mercy and his truth,

56:5. And he hath delivered my soul from the midst of the young lions.
I slept troubled.  The sons of men, whose teeth are weapons and arrows,
and their tongue a sharp sword.

56:6. Be thou exalted, O God, above the heavens, and thy glory above
all the earth.

56:7. They prepared a snare for my feet; and they bowed down my soul.
They dug a pit before my face, and they are fallen into it.

56:8. My heart is ready, O God, my heart is ready:  I will sing, and
rehearse a psalm.

56:9. Arise, O my glory, arise psaltery and harp:  I will arise early.

56:10. I will give praise to thee, O Lord, among the people:  I will
sing a psalm to thee among the nations.

56:11. For thy mercy is magnified even to the heavens:  and thy truth
unto the clouds.

56:12. Be thou exalted, O God, above the heavens:  and thy glory above
all the earth.



Psalms Chapter 57


Si vere utique.

David reproveth the wicked, and foretelleth their punishment.

57:1. Unto the end, destroy not, for David, for an inscription of a
title.

57:2. If in very deed ye speak justice:  judge right things, ye sons of
men.

57:3. For in your heart you work iniquity:  your hands forge injustice
in the earth.

57:4. The wicked are alienated from the womb; they have gone astray
from the womb:  they have spoken false things.

57:5. Their madness is according to the likeness of a serpent:  like the
deaf asp that stoppeth her ears:

57:6. Which will not hear the voice of the charmers; nor of the wizard
that charmeth wisely.

57:7. God shall break in pieces their teeth in their mouth:  the Lord
shall break the grinders of the lions.

57:8. They shall come to nothing, like water running down; he hath bent
his bow till they be weakened.

57:9. Like wax that melteth they shall be taken away:  fire hath fallen
on them, and they shall not see the sun.

57:10. Before your thorns could know the brier; he swalloweth them up,
as alive, in his wrath.

Before your thorns, etc. . .That is, before your thorns grow up, so as
to become strong briers, they shall be overtaken and consumed by divine
justice, swallowing them up, as it were, alive in his wrath.

57:11. The just shall rejoice when he shall see the revenge:  he shall
wash his hands in the blood of the sinner.

Shall wash his hands, etc. . .Shall applaud the justice of God, and take
occasion from the consideration of the punishment of the wicked to wash
and cleanse his hands from sin.

57:12. And man shall say:  If indeed there be fruit to the just:  there
is indeed a God that judgeth them on the earth.



Psalms Chapter 58


Eripe me.

A prayer to be delivered from the wicked, with confidence in God's help
and protection.  It agrees to Christ and his enemies the Jews.

58:1. Unto the end, destroy not, for David for an inscription of a
title, when Saul sent and watched his house to kill him.  [1 Kings 19.]

58:2. Deliver me from my enemies, O my God; and defend me from them
that rise up against me.

58:3. Deliver me from them that work iniquity, and save me from bloody
men.

58:4. For behold they have caught my soul:  the mighty have rushed in
upon me:

58:5. Neither is it my iniquity, nor my sin, O Lord:  without iniquity
have I run, and directed my steps.

58:6. Rise up thou to meet me, and behold:  even thou, O Lord, the God
of hosts, the God of Israel.  Attend to visit all the nations:  have no
mercy on all them that work iniquity.

58:7. They shall return at evening, and shall suffer hunger like dogs:
and shall go round about the city.

58:8. Behold they shall speak with their mouth, and a sword is in their
lips:  for who, say they, hath heard us?

58:9. But thou, O Lord, shalt laugh at them:  thou shalt bring all the
nations to nothing.

58:10. I will keep my strength to thee:  for thou art my protector:

58:11. My God, his mercy shall prevent me.

58:12. God shall let me see over my enemies:  slay them not, lest at any
time my people forget.  Scatter them by thy power; and bring them down,
O Lord, my protector:

58:13. For the sin of their mouth, and the word of their lips:  and let
them be taken in their pride.  And for their cursing and lying they
shall be talked of,

58:14. When they are consumed:  when they are consumed by thy wrath, and
they shall be no more.  And they shall know that God will rule Jacob,
and all the ends of the earth.

58:15. They shall return at evening and shall suffer hunger like dogs:
and shall go round about the city.

58:16. They shall be scattered abroad to eat, and shall murmur if they
be not filled.

58:17. But I will sing thy strength:  and will extol thy mercy in the
morning.  For thou art become my support, and my refuge, in the day of
my trouble.

58:18. Unto thee, O my helper, will I sing, for thou art God my
defence:  my God my mercy.



Psalms Chapter 59


Deus, repulisti nos.

After many afflictions, the church of Christ shall prevail.

59:1. Unto the end, for them that shall be changed, for the inscription
of a title, to David himself, for doctrine,

59:2. When he set fire to Mesopotamia of Syria and Sobal:  and Joab
returned and slew of Edom, in the vale of the saltpits, twelve thousand
men.

59:3. O God, thou hast cast us off, and hast destroyed us; thou hast
been angry, and hast had mercy on us.

59:4. Thou hast moved the earth, and hast troubled it:  heal thou the
breaches thereof, for it has been moved.

59:5. Thou hast shewn thy people hard things; thou hast made us drink
the wine of sorrow.

59:6. Thou hast given a warning to them that fear thee:  that they may
flee from before the bow:  That thy beloved may be delivered.

59:7. Save me with thy right hand, and hear me.

59:8. God hath spoken in his holy place:  I will rejoice, and I will
divide Sichem; and will mete out the vale of tabernacles.

59:9. Galaad is mine, and Manasses is mine:  and Ephraim is the strength
of my head.  Juda is my king:

59:10. Moab is the pot of my hope.  Into Edom will I stretch out my
shoe:  to me the foreigners are made subject.

The pot of my hope. . .Or my watering pot.  That is, a vessel for meaner
uses, by being reduced to serve me, even in the meanest
employments.--Ibid.  Foreigners. . .So the Philistines are called, who
had no kindred with the Israelites; whereas the Edomites, Moabites, etc.,
were originally of the same family.

59:11. Who will bring me into the strong city?  who will lead me into
Edom?

59:12. Wilt not thou, O God, who hast cast us off?  and wilt not thou, O
God, go out with our armies?

59:13. Give us help from trouble:  for vain is the salvation of man.

59:14. Through God we shall do mightily:  and he shall bring to nothing
them that afflict us.



Psalms Chapter 60


Exaudi, Deus.

A prayer for the coming of the kingdom of Christ, which shall have no
end.

60:1. Unto the end, in hymns, for David.

60:2. Hear, O God, my supplication:  be attentive to my prayer.

60:3. To thee have I cried from the ends of the earth:  when my heart
was in anguish, thou hast exalted me on a rock.  Thou hast conducted me;

60:4. For thou hast been my hope; a tower of strength against the face
of the enemy.

60:5. In thy tabernacle I shall dwell for ever:  I shall be protected
under the covert of thy wings.

60:6. For thou, my God, hast heard my prayer:  thou hast given an
inheritance to them that fear thy name.

60:7. Thou wilt add days to the days of the king:  his years even to
generation and generation.

60:8. He abideth for ever in the sight of God:  his mercy and truth who
shall search?

60:9. So will I sing a psalm to thy name for ever and ever:  that I may
pay my vows from day to day.



Psalms Chapter 61


Nonne Deo.

The prophet encourageth himself and all others to trust in God, and
serve him.

61:1. Unto the end, for Idithun, a psalm of David.

61:2. Shall not my soul be subject to God?  for from him is my
salvation.

61:3. For he is my God and my saviour:  he is my protector, I shall be
moved no more.

61:4. How long do you rush in upon a man?  you all kill, as if you were
thrusting down a leaning wall, and a tottering fence.

61:5. But they have thought to cast away my price; I ran in thirst:
they blessed with their mouth, but cursed with their heart.

61:6. But be thou, O my soul, subject to God:  for from him is my
patience.

61:7. For he is my God and my saviour:  he is my helper, I shall not be
moved.

61:8. In God is my salvation and my glory:  he is the God of my help,
and my hope is in God.

61:9. Trust in him, all ye congregation of people:  pour out your hearts
before him.  God is our helper for ever.

61:10. But vain are the sons of men, the sons of men are liars in the
balances:  that by vanity they may together deceive.

Are liars in the balances, etc. . .They are so vain and light, that if
they are put into the scales, they will be found to be of no weight;
and to be mere lies, deceit, and vanity.  Or, They are liars in their
balances, by weighing things by false weights, and preferring the
temporal before the eternal.

61:11. Trust not in iniquity, and cover not robberies:  if riches
abound, set not your heart upon them.

61:12. God hath spoken once, these two things have I heard, that power
belongeth to God,

61:13. And mercy to thee, O Lord; for thou wilt render to every man
according to his works.



Psalms Chapter 62


Deus Deus meus, ad te.

The prophet aspireth after God.

62:1. A psalm of David while he was in the desert of Edom.

62:2. O God, my God, to thee do I watch at break of day.  For thee my
soul hath thirsted; for thee my flesh, O how many ways!

62:3. In a desert land, and where there is no way, and no water:  so in
the sanctuary have I come before thee, to see thy power and thy glory.

62:4. For thy mercy is better than lives:  thee my lips will praise.

62:5. Thus will I bless thee all my life long:  and in thy name I will
lift up my hands.

62:6. Let my soul be filled as with marrow and fatness:  and my mouth
shall praise thee with joyful lips.

62:7. If I have remembered thee upon my bed, I will meditate on thee in
the morning:

62:8. Because thou hast been my helper.  And I will rejoice under the
covert of thy wings:

62:9. My soul hath stuck close to thee:  thy right hand hath received
me.

62:10. But they have fought my soul in vain, they shall go into the
lower parts of the earth:

62:11. They shall be delivered into the hands of the sword, they shall
be the portions of foxes.

62:12. But the king shall rejoice in God, all they shall be praised
that swear by him:  because the mouth is stopped of them that speak
wicked things.



Psalms Chapter 63


Exaudi Deus orationem.

A prayer in affliction, with confidence in God that he will bring to
nought the machinations of persecutors.

63:1. Unto the end, a psalm for David.

63:2. Hear O God, my prayer, when I make supplication to thee:  deliver
my soul from the fear of the enemy.

63:3. Thou hast protected me from the assembly of the malignant; from
the multitude of the workers of iniquity.

63:4. For they have whetted their tongues like a sword; they have bent
their bow a bitter thing,

63:5. To shoot in secret the undefiled.

63:6. They will shoot at him on a sudden, and will not fear:  they are
resolute in wickedness.  They have talked of hiding snares; they have
said:  Who shall see them?

63:7. They have searched after iniquities:  they have failed in their
search.  Man shall come to a deep heart:

A deep heart. . .That is, crafty, subtle, deep projects and designs;
which nevertheless shall not succeed; for God shall be exalted in
bringing them to nought by his wisdom and power.

63:8. And God shall be exalted.  The arrows of children are their
wounds:

The arrows of children are their wounds. . .That is, the wounds,
stripes, or blows, they seek to inflict upon the just, are but like the
weak efforts of children's arrows, which can do no execution:  and their
tongues, that is, their speeches against them come to nothing.

63:9. And their tongues against them are made weak.  All that saw them
were troubled;

63:10. And every man was afraid.  And they declared the works of God,
and understood his doings.

63:11. The just shall rejoice in the Lord, and shall hope in him:  and
all the upright in heart shall be praised.



Psalms Chapter 64


Te decet.

God is to be praised in his church, to which all nations shall be
called.

64:1. To the end, a psalm of David.  The canticle of Jeremias and
Ezechiel to the people of the captivity, when they began to go out.

Of the captivity. . .That is, the people of the captivity of Babylon.
This is not in the Hebrew, but is found in the ancient translation of
the Septuagint.

64:2. A hymn, O God, becometh thee in Sion:  and a vow shall be paid to
thee in Jerusalem.

64:3. O hear my prayer:  all flesh shall come to thee.

64:4. The words of the wicked have prevailed over us:  and thou wilt
pardon our transgressions.

64:5. Blessed is he whom thou hast chosen and taken to thee:  he shall
dwell in thy courts.  We shall be filled with the good things of thy
house; holy is thy temple,

64:6. Wonderful in justice.  Hear us, O God our saviour, who art the
hope of all the ends of the earth, and in the sea afar off.

64:7. Thou who preparest the mountains by thy strength, being girded
with power:

64:8. Who troublest the depth of the sea, the noise of its waves.  The
Gentiles shall be troubled,

64:9. And they that dwell in the uttermost borders shall be afraid at
thy signs:  thou shalt make the outgoings of the morning and of the
evening to be joyful.

64:10. Thou hast visited the earth, and hast plentifully watered it;
thou hast many ways enriched it.  The river of God is filled with water,
thou hast prepared their food:  for so is its preparation.

64:11. Fill up plentifully the streams thereof, multiply its fruits; it
shall spring up and rejoice in its showers.

64:12. Thou shalt bless the crown of the year of thy goodness:  and thy
fields shall be filled with plenty.

64:13. The beautiful places of the wilderness shall grow fat:  and the
hills shall be girded about with joy,

64:14. The rams of the flock are clothed, and the vales shall abound
with corn:  they shall shout, yea they shall sing a hymn.



Psalms Chapter 65


Jubilate Deo.

An invitation to praise God.

65:1. Unto the end, a canticle of a psalm of the resurrection.  Shout
with joy to God, all the earth,

65:2. Sing ye a psalm to his name; give glory to his praise.

65:3. Say unto God, How terrible are thy works, O Lord! in the
multitude of thy strength thy enemies shall lie to thee.

65:4. Let all the earth adore thee, and sing to thee:  let it sing a
psalm to thy name.

65:5. Come and see the works of God; who is terrible in his counsels
over the sons of men.

65:6. Who turneth the sea into dry land, in the river they shall pass
on foot:  there shall we rejoice in him.

65:7. Who by his power ruleth for ever:  his eyes behold the nations;
let not them that provoke him be exalted in themselves.

65:8. O bless our God, ye Gentiles:  and make the voice of his praise to
be heard.

65:9. Who hath set my soul to live:  and hath not suffered my feet to be
moved:

65:10. For thou, O God, hast proved us:  thou hast tried us by fire, as
silver is tried.

65:11. Thou hast brought us into a net, thou hast laid afflictions on
our back:

65:12. Thou hast set men over our heads.  We have passed through fire
and water, and thou hast brought us out into a refreshment.

65:13. I will go into thy house with burnt offerings:  I will pay thee
my vows,

65:14. Which my lips have uttered, And my mouth hath spoken, when I was
in trouble.

65:15. I will offer up to thee holocausts full of marrow, with burnt
offerings of rams:  I will offer to thee bullocks with goats.

65:16. Come and hear, all ye that fear God, and I will tell you what
great things he hath done for my soul.

65:17. I cried to him with my mouth:  and I extolled him with my tongue.

65:18. If I have looked at iniquity in my heart, the Lord will not hear
me.

65:19. Therefore hath God heard me, and hath attended to the voice of
my supplication.

65:20. Blessed be God, who hath not turned away my prayer, nor his
mercy from me.



Psalms Chapter 66


Deus misereatur.

A prayer for the propagation of the church.

66:1. Unto the end, in hymns, a psalm of a canticle for David.

66:2. May God have mercy on us, and bless us:  may he cause the light of
his countenance to shine upon us, and may he have mercy on us.

66:3. That we may know thy way upon earth:  thy salvation in all
nations.

66:4. Let people confess to thee, O God:  let all people give praise to
thee.

66:5. Let the nations be glad and rejoice:  for thou judgest the people
with justice, and directest the nations upon earth.

66:6. Let the people, O God, confess to thee:  let all the people give
praise to thee:

66:7. The earth hath yielded her fruit.  May God, our God bless us,

66:8. May God bless us:  and all the ends of the earth fear him.



Psalms Chapter 67


Exurgat Deus.

The glorious establishment of the church of the New Testament,
prefigured by the benefits bestowed on the people of Israel.

67:1. Unto the end, a psalm of a canticle for David himself.

67:2. Let God arise, and let his enemies be scattered:  and let them
that hate him flee from before his face.

67:3. As smoke vanisheth, so let them vanish away:  as wax melteth
before the fire, so let the wicked perish at the presence of God.

67:4. And let the just feast, and rejoice before God:  and be delighted
with gladness.

67:5. Sing ye to God, sing a psalm to his name, make a way for him who
ascendeth upon the west:  the Lord is his name.  Rejoice ye before him:
but the wicked shall be troubled at his presence,

Who ascendeth upon the west. . .Super occasum.  St. Gregory understands
it of Christ, who after his going down, like the sun, in the west, by
his passion and death, ascended more glorious, and carried all before
him.  St. Jerome renders it, who ascendeth, or cometh up, through the
deserts.

67:6. Who is the father of orphans, and the judge of widows.  God in his
holy place:

67:7. God who maketh men of one manner to dwell in a house:  Who
bringeth out them that were bound in strength; in like manner them that
provoke, that dwell in sepulchres.

Of one manner. . .That is, agreeing in faith, unanimous in love, and
following the same manner of discipline.  It is verified in the servants
of God, living together in his house, which is the church.  1 Tim.
3.15.--Ibid.  Them that were bound, etc. . .The power and mercy of God
appears in his bringing out of their captivity those that were strongly
bound in their sins:  and in restoring to his grace those whose
behaviour had been most provoking; and who by their evil habits were
not only dead, but buried in their sepulchres.

67:8. O God, when thou didst go forth in the sight of thy people, when
thou didst pass through the desert:

67:9. The earth was moved, and the heavens dropped at the presence of
the God of Sina, at the presence of the God of Israel.

67:10. Thou shalt set aside for thy inheritance a free rain, O God:  and
it was weakened, but thou hast made it perfect.

A free rain. . .the manna, which rained plentifully from heaven, in
favour of God's inheritance, that is, of his people Israel:  which was
weakened indeed under a variety of afflictions, but was made perfect by
God; that is, was still supported by divine providence, and brought on
to the promised land.  It agrees particularly to the church of Christ
his true inheritance, which is plentifully watered with the free rain
of heavenly grace; and through many infirmities, that is, crosses and
tribulations, is made perfect, and fitted for eternal glory.

67:11. In it shall thy animals dwell; in thy sweetness, O God, thou
hast provided for the poor.

In it, etc. . .That is, in this church, which is thy fold and thy
inheritance, shall thy animals, thy sheep, dwell:  where thou hast
plentifully provided for them.

67:12. The Lord shall give the word to them that preach good tidings
with great power.

To them that preach good tidings. . .Evangelizantibus.  That is, to the
preachers of the gospel; who receiving the word from the Lord, shall
with great power and efficacy preach throughout the world the glad
tidings of a Saviour, and of eternal salvation through him.

67:13. The king of powers is of the beloved, of the beloved; and the
beauty of the house shall divide spoils.

The king of powers. . .That is, the mighty King, the Lord of hosts, is
of the beloved, of the beloved; that is, is on the side of Christ, his
most beloved son:  and his beautiful house, viz., the church, in which
God dwells forever, shall by her spiritual conquests divide the spoils
of many nations.  The Hebrew (as it now stands pointed) is thus
rendered, The kings of armies have fled, they have fled, and she that
dwells at home (or the beauty of the house) shall divide the spoils.

67:14. If you sleep among the midst of lots, you shall be as the wings
of a dove covered with silver, and the hinder parts of her back with
the paleness of gold.

If you sleep among the midst of lots (intermedios cleros, etc.). . .Viz.,
in such dangers and persecutions, as if your enemies were casting
lots for your goods and persons:  or in the midst of the lots,
(intermedios terminos, as St. Jerome renders it,) that is, upon the
very bounds or borders of the dominions of your enemies:  you shall be
secure nevertheless under the divine protection; and shall be enabled
to fly away, like a dove, with glittering wings and feathers shining
like the palest and most precious gold; that is, with great increase of
virtue, and glowing with the fervour of charity.

67:15. When he that is in heaven appointeth kings over her, they shall
be whited with snow in Selmon.

Kings over her. . .That is, pastors and rulers over his church, viz.,
the apostles and their successors.  Then by their ministry shall men be
made whiter than the snow which lies on the top of the high mountain
Selmon.

67:16. The mountain of God is a fat mountain.  A curdled mountain, a fat
mountain.

The mountain of God. . .The church, which, Isa. 2.2, is called The
mountain of the house of the Lord upon the top of mountains.  It is here
called a fat and a curdled mountain; that is to say, most fruitful, and
enriched by the spiritual gifts and graces of the Holy Ghost.

67:17. Why suspect, ye curdled mountains?  A mountain in which God is
well pleased to dwell:  for there the Lord shall dwell unto the end.

Why suspect, ye curdled mountains?. . .Why do you suppose or imagine
there may be any other such curdled mountains?  You are mistaken:  the
mountain thus favoured by God is but one; and this same he has chosen
for his dwelling for ever.

67:18. The chariot of God is attended by ten thousands; thousands of
them that rejoice:  the Lord is among them in Sina, in the holy place.

The chariot of God. . .Descending to give his law on mount Sina:  as also
of Jesus Christ his Son, ascending into heaven, to send from thence the
Holy Ghost, to publish his new law, is attended with ten thousands,
that is, with an innumerable multitude of joyful angels.

67:19. Thou hast ascended on high, thou hast led captivity captive;
thou hast received gifts in men.  Yea for those also that do not
believe, the dwelling of the Lord God.

Led captivity captive. . .Carrying away with thee to heaven those who
before had been the captives of Satan; and receiving from God the
Father gifts to be distributed to men; even to those who were before
unbelievers.

67:20. Blessed be the Lord day by day:  the God of our salvation will
make our journey prosperous to us.

67:21. Our God is the God of salvation:  and of the Lord, of the Lord
are the issues from death.

The issues from death. . .The Lord alone is master of the issues, by
which we may escape from death.

67:22. But God shall break the heads of his enemies:  the hairy crown of
them that walk on in their sins.

67:23. The Lord said:  I will turn them from Basan, I will turn them
into the depth of the sea:

I will turn them from Basan, etc. . .I will cast out my enemies from
their rich possessions, signified by Basan, a fruitful country; and I
will drive them into the depth of the sea:  and make such a slaughter of
them, that the feet of my servants may be dyed in their blood, etc.

67:24. That thy foot may be dipped in the blood of thy enemies; the
tongue of thy dogs be red with the same.

67:25. They have seen thy goings, O God, the goings of my God:  of my
king who is in his sanctuary.

Thy goings. . .Thy ways, thy proceedings, by which thou didst formerly
take possession of the promised land in favour of thy people; and shalt
afterwards of the whole world, which thou shalt subdue to thy Son.

67:26. Princes went before joined with singers, in the midst of young
damsels playing on timbrels.

Princes. . .The apostles, the first converters of nations; attended by
numbers of perfect souls, singing the divine praises, and virgins
consecrated to God.

67:27. In the churches bless ye God the Lord, from the fountains of
Israel.

From the fountains of Israel. . .From whom both Christ and his apostles
sprung.  By Benjamin, the holy fathers on this place understand St.
Paul, who was of that tribe, named here a youth, because he was the
last called to the apostleship.  By the princes of Juda, Zabulon, and
Nephthali, we may understand the other apostles, who were of the tribe
of Juda; or of the tribes of Zabulon, and Nephthali, where our Lord
began to preach, Matt. 4.13, etc.

67:28. There is Benjamin a youth, in ecstasy of mind.  The princes of
Juda are their leaders:  the princes of Zabulon, the princes of
Nephthali.

67:29. Command thy strength, O God confirm, O God, what thou hast
wrought in us.

Command thy strength. . .Give orders that thy strength may be always with
us.

67:30. From thy temple in Jerusalem, kings shall offer presents to
thee.

67:31. Rebuke the wild beasts of the reeds, the congregation of bulls
with the kine of the people; who seek to exclude them who are tried
with silver.  Scatter thou the nations that delight in wars:

Rebuke the wild beasts of the reeds. . .or the wild beasts, which lie
hid in the reeds.  That is, the devils, who hide themselves in order to
surprise their prey.  Or by wild beasts, are here understood
persecutors, who, for all their attempts against the Church, are but as
weak reeds, which cannot prevail against them who are supported by the
strength of the Almighty.  The same are also called the congregation of
bulls (from their rage against the Church) who assemble together all
their kine, that is, the people their subjects, to exclude if they can,
from Christ and his inheritance, his constant confessors, who are like
silver tried by fire.

67:32. Ambassadors shall come out of Egypt:  Ethiopia shall soon stretch
out her hands to God.

Ambassadors shall come, etc. . .It is a prophecy of the conversion of
the Gentiles, and by name of the Egyptians and Ethiopians.

67:33. Sing to God, ye kingdoms of the earth:  sing ye to the Lord:  Sing
ye to God,

67:34. Who mounteth above the heaven of heavens, to the east.  Behold he
will give to his voice the voice of power:

To the east. . .From mount Olivet, which is on the east side of
Jerusalem.--Ibid.  The voice of power. . .That is, he will make his voice
to be a powerful voice:  by calling from death to life, such as were
dead in mortal sin:  as at the last day he will by the power of his
voice call all the dead from their graves.

67:35. Give ye glory to God for Israel, his magnificence, and his power
is in the clouds.

67:36. God is wonderful in his saints:  the God of Israel is he who will
give power and strength to his people.  Blessed be God.



Psalms Chapter 68


Salvum me fac, Deus.

Christ in his passion declareth the greatness of his sufferings, and
the malice of his persecutors the Jews; and foretelleth their
reprobation.

68:1. Unto the end, for them that shall be changed; for David.

For them that shall be changed. . .A psalm for Christian converts, to
remember the passion of Christ.

68:2. Save me, O God:  for the waters are come in even unto my soul.

The waters. . .Of afflictions and sorrows.  My soul is sorrowful even
unto death.  Matt. 26.38.

68:3. I stick fast in the mire of the deep and there is no sure
standing.  I am come into the depth of the sea, and a tempest hath
overwhelmed me.

68:4. I have laboured with crying; my jaws are become hoarse, my eyes
have failed, whilst I hope in my God.

68:5. They are multiplied above the hairs of my head, who hate me
without cause.  My enemies are grown strong who have wrongfully
persecuted me:  then did I pay that which I took not away.

I pay that which I took not away. . .Christ in his passion made
restitution of what he had not taken away, by suffering the punishment
due to our sins, and so repairing the injury we had done to God.

68:6. O God, thou knowest my foolishness; and my offences are not
hidden from thee:

My foolishness and my offences. . .which my enemies impute to me:  or the
follies and sins of men, which I have taken upon myself.

68:7. Let not them be ashamed for me, who look for thee, O Lord, the
Lord of hosts.  Let them not be confounded on my account, who seek thee,
O God of Israel.

68:8. Because for thy sake I have borne reproach; shame hath covered my
face.

68:9. I am become a stranger to my brethren, and an alien to the sons
of my mother.

68:10. For the zeal of thy house hath eaten me up:  and the reproaches
of them that reproached thee are fallen upon me.

68:11. And I covered my soul in fasting:  and it was made a reproach to
me.

68:12. And I made haircloth my garment:  and I became a byword to them.

68:13. They that sat in the gate spoke against me:  and they that drank
wine made me their song.

68:14. But as for me, my prayer is to thee, O Lord; for the time of thy
good pleasure, O God.  In the multitude of thy mercy hear me, in the
truth of thy salvation.

68:15. Draw me out of the mire, that I may not stick fast:  deliver me
from them that hate me, and out of the deep waters.

68:16. Let not the tempest of water drown me, nor the deep water
swallow me up:  and let not the pit shut her mouth upon me.

68:17. Hear me, O Lord, for thy mercy is kind; look upon me according
to the multitude of thy tender mercies.

68:18. And turn not away thy face from thy servant:  for I am in
trouble, hear me speedily.

68:19. Attend to my soul, and deliver it:  save me because of my
enemies.

68:20. Thou knowest my reproach, and my confusion, and my shame.

68:21. In thy sight are all they that afflict me; my heart hath
expected reproach and misery.  And I looked for one that would grieve
together with me, but there was none:  and for one that would comfort
me, and I found none.

68:22. And they gave me gall for my food, and in my thirst they gave me
vinegar to drink.

68:23. Let their table become as a snare before them, and a recompense,
and a stumblingblock.

Let their table, etc. . .What here follows in the style of an
imprecation, is a prophecy of the wretched state to which the Jews
should be reduced in punishment of their wilful obstinacy.

68:24. Let their eyes be darkened that they see not; and their back
bend thou down always.

68:25. Pour out thy indignation upon them:  and let thy wrathful anger
take hold of them.

68:26. Let their habitation be made desolate:  and let there be none to
dwell in their tabernacles.

68:27. Because they have persecuted him whom thou hast smitten; and
they have added to the grief of my wounds.

68:28. Add thou iniquity upon their iniquity:  and let them not come
into thy justice.

68:29. Let them be blotted out of the book of the living; and with the
just let them not be written.

68:30. But I am poor and sorrowful:  thy salvation, O God, hath set me
up.

68:31. I will praise the name of God with a canticle:  and I will
magnify him with praise.

68:32. And it shall please God better than a young calf, that bringeth
forth horns and hoofs.

68:33. Let the poor see and rejoice:  seek ye God, and your soul shall
live.

68:34. For the Lord hath heard the poor:  and hath not despised his
prisoners.

68:35. Let the heavens and the earth praise him; the sea, and every
thing that creepeth therein.

68:36. For God will save Sion, and the cities of Juda shall be built
up.  And they shall dwell there, and acquire it by inheritance.

Sion. . .The catholic church.  The cities of Juda, etc., her places of
worship, which shall be established throughout the world.  And there,
viz., in this church of Christ, shall his servants dwell, etc.

68:37. And the seed of his servants shall possess it; and they that
love his name shall dwell therein.



Psalms Chapter 69


Deus in adjutorium.

A prayer in persecution.

69:1. Unto the end, a psalm for David, to bring to remembrance that the
Lord saved him.

69:2. O God, come to my assistance; O Lord, make haste to help me.

69:3. Let them be confounded and ashamed that seek my soul:

69:4. Let them be turned backward, and blush for shame that desire
evils to me:  Let them be presently turned away blushing for shame that
say to me:  'Tis well, 'tis well.

'T is well, 't is well. . .Euge, euge.  St. Jerome renders it, vah, vah!
which is the voice of one insulting and deriding.  Some understand it as
a detestation of deceitful flatterers.

69:5. Let all that seek thee rejoice and be glad in thee; and let such
as love thy salvation say always:  The Lord be magnified.

69:6. But I am needy and poor; O God, help me.  Thou art my helper and
my deliverer:  O lord, make no delay.



Psalms Chapter 70


In te, Domine.

A prayer for perseverance.

70:1. A psalm for David.  Of the sons of Jonadab, and the former
captives.  In thee, O Lord, I have hoped, let me never be put to
confusion:

Of the sons of Jonadab. . .The Rechabites, of whom see Jer. 35.  By this
addition of the seventy-two interpreters, we gather that this psalm was
usually sung in the synagogue, in the person of the Rechabites, and of
those who were first carried away into captivity.

70:2. Deliver me in thy justice, and rescue me.  Incline thy ear unto
me, and save me.

70:3. Be thou unto me a God, a protector, and a place of strength:  that
thou mayst make me safe.  For thou art my firmament and my refuge.

70:4. Deliver me, O my God, out of the hand of the sinner, and out of
the hand of the transgressor of the law and of the unjust.

70:5. For thou art my patience, O Lord:  my hope, O Lord, from my youth.

70:6. By thee have I been confirmed from the womb:  from my mother's
womb thou art my protector.  Of thee I shall continually sing:

70:7. I am become unto many as a wonder, but thou art a strong helper.

70:8. Let my mouth be filled with praise, that I may sing thy glory;
thy greatness all the day long.

70:9. Cast me not off in the time of old age:  when my strength shall
fail, do not thou forsake me.

70:10. For my enemies have spoken against me; and they that watched my
soul have consulted together,

70:11. Saying:  God hath forsaken him:  pursue and take him, for there is
none to deliver him.

70:12. O God, be not thou far from me:  O my God, make haste to my help.

70:13. Let them be confounded and come to nothing that detract my soul;
let them be covered with confusion and blame that seek my hurt.

70:14. But I will always hope; and will add to all thy praise.

70:15. My mouth shall shew forth thy justice; thy salvation all the day
long.  Because I have not known learning,

Learning. . .As much as to say, I build not upon human learning, but
only on the power and justice of God.

70:16. I will enter into the powers of the Lord:  O Lord, I will be
mindful of thy justice alone.

70:17. Thou hast taught me, O God, from my youth:  and till now I will
declare thy wonderful works.

70:18. And unto old age and grey hairs:  O God, forsake me not, Until I
shew forth thy arm to all the generation that is to come:  Thy power,

70:19. And thy justice, O God, even to the highest great things thou
hast done:  O God, who is like to thee?

70:20. How great troubles hast thou shewn me, many and grievous:  and
turning thou hast brought me to life, and hast brought me back again
from the depths of the earth:

70:21. Thou hast multiplied thy magnificence; and turning to me thou
hast comforted me.

70:22. For I will also confess to thee thy truth with the instruments
of psaltery:  O God, I will sing to thee with the harp, thou holy one of
Israel.

70:23. My lips shall greatly rejoice, when I shall sing to thee; and my
soul which thou hast redeemed.

70:24. Yea and my tongue shall meditate on thy justice all the day;
when they shall be confounded and put to shame that seek evils to me.



Psalms Chapter 71


Deus, judicium tuum.

A prophecy of the coming of Christ, and of his kingdom:  prefigured by
Solomon and his happy reign.

71:1. A psalm on Solomon.

71:2. Give to the king thy judgment, O God, and to the king's son thy
justice:  To judge thy people with justice, and thy poor with judgment.

71:3. Let the mountains receive peace for the people:  and the hills
justice.

71:4. He shall judge the poor of the people, and he shall save the
children of the poor:  and he shall humble the oppressor.

71:5. And he shall continue with the sun and before the moon,
throughout all generations.

71:6. He shall come down like rain upon the fleece; and as showers
falling gently upon the earth.

71:7. In his days shall justice spring up, and abundance of peace, till
the moon be taken away.

71:8. And he shall rule from sea to sea, and from the river unto the
ends of the earth.

71:9. Before him the Ethiopians shall fall down:  and his enemies shall
lick the ground.

71:10. The kings of Tharsis and the islands shall offer presents:  the
kings of the Arabians and of Saba shall bring gifts:

71:11. And all kings of the earth shall adore him:  all nations shall
serve him.

71:12. For he shall deliver the poor from the mighty:  and the needy
that had no helper.

71:13. He shall spare the poor and needy:  and he shall save the souls
of the poor.

71:14. He shall redeem their souls from usuries and iniquity:  and their
names shall be honourable in his sight.

71:15. And he shall live, and to him shall be given of the gold of
Arabia, for him they shall always adore:  they shall bless him all the
day.

71:16. And there shall be a firmament on the earth on the tops of
mountains, above Libanus shall the fruit thereof be exalted:  and they
of the city shall flourish like the grass of the earth.

A firmament on the earth, etc. . .This may be understood of the church
of Christ, ever firm and visible:  and of the flourishing condition of
its congregation.

71:17. Let his name be blessed for evermore:  his name continueth before
the sun.  And in him shall all the tribes of the earth be blessed:  all
nations shall magnify him.

71:18. Blessed be the Lord, the God of Israel, who alone doth wonderful
things.

71:19. And blessed be the name of his majesty for ever:  and the whole
earth shall be filled with his majesty.  So be it.  So be it.

71:20. The praises of David, the son of Jesse, are ended.

Are ended. . .By this it appears that this psalm, though placed here,
was in order of time the last of those which David composed.



Psalms Chapter 72


Quam bonus Israel Deus.

The temptation of the weak, upon seeing the prosperity of the wicked,
is overcome by the consideration of the justice of God, who will
quickly render to every one according to his works.

72:1. A psalm for Asaph.  How good is God to Israel, to them that are of
a right heart!

72:2. But my feet were almost moved; my steps had well nigh slipped.

72:3. Because I had a zeal on occasion of the wicked, seeing the
prosperity of sinners.

72:4. For there is no regard to their death, nor is there strength in
their stripes.

72:5. They are not in the labour of men:  neither shall they be scourged
like other men.

72:6. Therefore pride hath held them fast:  they are covered with their
iniquity and their wickedness.

72:7. Their iniquity hath come forth, as it were from fatness:  they
have passed into the affection of the heart.

Fatness. . .Abundance and temporal prosperity, which hath encouraged
them in their iniquity:  and made them give themselves up to their
irregular affections.

72:8. They have thought and spoken wickedness:  they have spoken
iniquity on high.

72:9. They have set their mouth against heaven:  and their tongue hath
passed through the earth.

72:10. Therefore will my people return here and full days shall be
found in them.

Return here. . .or hither.  The weak among the servants of God, will be
apt often to return to this thought, and will be shocked when they
consider the full days, that is, the long and prosperous life of the
wicked; and will be tempted to make the reflections against providence
which are set down in the following verses.

72:11. And they said:  How doth God know?  and is there knowledge in the
most High?

72:12. Behold these are sinners; and yet, abounding in the world they
have obtained riches.

72:13. And I said:  Then have I in vain justified my heart, and washed
my hands among the innocent.

72:14. And I have been scourged all the day; and my chastisement hath
been in the mornings.

72:15. If I said:  I will speak thus; behold I should condemn the
generation of thy children.

If I said, etc. . .That is, if I should indulge such thoughts as these.

72:16. I studied that I might know this thing, it is a labour in my
sight:

72:17. Until I go into the sanctuary of God, and understand concerning
their last ends.

72:18. But indeed for deceits thou hast put it to them:  when they were
lifted up thou hast cast them down.

Thou hast put it to them. . .In punishment of their deceits, or for
deceiving them, thou hast brought evils upon them in their last end,
which, in their prosperity they never apprehended.

72:19. How are they brought to desolation?  they have suddenly ceased to
be:  they have perished by reason of their iniquity.

72:20. As the dream of them that awake, O Lord; so in thy city thou
shalt bring their image to nothing.

72:21. For my heart hath been inflamed, and my reins have been changed:

72:22. And I am brought to nothing, and I knew not.

72:23. I am become as a beast before thee:  and I am always with thee.

72:24. Thou hast held me by my right hand; and by thy will thou hast
conducted me, and with thy glory thou hast received me.

72:25. For what have I in heaven?  and besides thee what do I desire
upon earth?

72:26. For thee my flesh and my heart hath fainted away:  thou art the
God of my heart, and the God that is my portion for ever.

72:27. For behold they that go far from thee shall perish:  thou hast
destroyed all them that are disloyal to thee.

72:28. But it is good for me to adhere to my God, to put my hope in the
Lord God:  That I may declare all thy praises, in the gates of the
daughter of Sion.



Psalms Chapter 73


Ut quid, Deus.

A prayer of the church under grievous persecutions.

73:1. Understanding for Asaph.  O God, why hast thou cast us off unto
the end:  why is thy wrath enkindled against the sheep of thy pasture?

73:2. Remember thy congregation, which thou hast possessed from the
beginning.  The sceptre of thy inheritance which thou hast redeemed:
mount Sion in which thou hast dwelt.

73:3. Lift up thy hands against their pride unto the end; see what
things the enemy hath done wickedly in the sanctuary.

73:4. And they that hate thee have made their boasts, in the midst of
thy solemnity.  They have set up their ensigns for signs,

Their ensigns, etc. . .They have fixed their colours for signs and
trophies, both on the gates, and on the highest top of the temple:  and
they knew not, that is, they regarded not the sanctity of the place.
This psalm manifestly foretells the time of the Machabees, and the
profanation of the temple by Antiochus.

73:5. And they knew not both in the going out and on the highest top.
As with axes in a wood of trees,

73:6. They have cut down at once the gates thereof, with axe and
hatchet they have brought it down.

73:7. They have set fire to thy sanctuary:  they have defiled the
dwelling place of thy name on the earth.

73:8. They said in their heart, the whole kindred of them together:  Let
us abolish all the festival days of God from the land.

73:9. Our signs we have not seen, there is now no prophet:  and he will
know us no more.

73:10. How long, O God, shall the enemy reproach:  is the adversary to
provoke thy name for ever?

73:11. Why dost thou turn away thy hand:  and thy right hand out of the
midst of thy bosom for ever?

73:12. But God is our king before ages:  he hath wrought salvation in
the midst of the earth.

73:13. Thou by thy strength didst make the sea firm:  thou didst crush
the heads of the dragons in the waters.

The sea firm. . .By making the waters of the Red Sea stand like firm
walls, whilst Israel passed through:  and destroying the Egyptians
called here dragons from their cruelty, in the same waters, with their
king:  casting up their bodies on the shore to be stripped by the
Ethiopians inhabiting in those days the coast of Arabia.

73:14. Thou hast broken the heads of the dragon:  thou hast given him to
be meat for the people of the Ethiopians.

73:15. Thou hast broken up the fountains and the torrents:  thou hast
dried up the Ethan rivers.

Ethan rivers. . .That is, rivers which run with strong streams.  This was
verified in Jordan, Jos. 3, and in Arnon, Num. 21.14.

73:16. Thine is the day, and thine is the night:  thou hast made the
morning light and the sun.

73:17. Thou hast made all the borders of the earth:  the summer and the
spring were formed by thee.

73:18. Remember this, the enemy hath reproached the Lord:  and a foolish
people hath provoked thy name.

73:19. Deliver not up to beasts the souls that confess to thee:  and
forget not to the end the souls of thy poor.

73:20. Have regard to thy covenant:  for they that are the obscure of
the earth have been filled with dwellings of iniquity.

The obscure of the earth. . .Mean and ignoble wretches have been filled,
that is, enriched, with houses of iniquity, that is, with our estates
and possessions, which they have unjustly acquired.

73:21. Let not the humble be turned away with confusion:  the poor and
needy shall praise thy name.

73:22. Arise, O God, judge thy own cause:  remember thy reproaches with
which the foolish man hath reproached thee all the day.

73:23. Forget not the voices of thy enemies:  the pride of them that
hate thee ascendeth continually.



Psalms Chapter 74


Confitebimur tibi.

There is a just judgment to come:  therefore let the wicked take care.

74:1. Unto the end, corrupt not, a psalm of a canticle for Asaph.

Corrupt not. . .It is believed to have been the beginning of some ode or
hymn, to the tune of which this psalm was to be sung.  St. Augustine and
other fathers take it to be an admonition of the spirit of God, not to
faint or fail in our hope:  but to persevere with constancy in good:
because God will not fail in his due time to render to every man
according to his works.

74:2. We will praise thee, O God:  we will praise, and we will call upon
thy name.  We will relate thy wondrous works:

74:3. When I shall take a time, I will judge justices.

When I shall take a time. . .In proper times:  particularly at the last
day, when the earth shall melt away at the presence of the great Judge:
the same who originally laid the foundations of it, and as it were
established its pillars.

74:4. The earth is melted, and all that dwell therein:  I have
established the pillars thereof.

74:5. I said to the wicked:  Do not act wickedly:  and to the sinners:
Lift not up the horn.

74:6. Lift not up your horn on high:  speak not iniquity against God.

74:7. For neither from the east, nor from the west, nor from the desert
hills:

74:8. For God is the judge.  One he putteth down, and another he lifteth
up:

74:9. For in the hand of the Lord there is a cup of strong wine full of
mixture.  And he hath poured it out from this to that:  but the dregs
thereof are not emptied:  all the sinners of the earth shall drink.

74:10. But I will declare for ever:  I will sing to the God of Jacob.

74:11. And I will break all the horns of sinners:  but the horns of the
just shall be exalted.



Psalms Chapter 75


Notus in Judaea.

God is known in his church:  and exerts his power in protecting it.  It
alludes to the slaughter of the Assyrians, in the days of king
Ezechias.

75:1. Unto the end, in praises, a psalm for Asaph:  a canticle to the
Assyrians.

75:2. In Judea God is known:  his name is great in Israel.

75:3. And his place is in peace:  and his abode in Sion:

75:4. There hath he broken the powers of bows, the shield, the sword,
and the battle.

75:5. Thou enlightenest wonderfully from the everlasting hills.

75:6. All the foolish of heart were troubled.  They have slept their
sleep; and all the men of riches have found nothing in their hands.

75:7. At thy rebuke, O God of Jacob, they have all slumbered that
mounted on horseback.

75:8. Thou art terrible, and who shall resist thee?  from that time thy
wrath.

From that time, etc. . .From the time that thy wrath shall break out.

75:9. Thou hast caused judgment to be heard from heaven:  the earth
trembled and was still,

75:10. When God arose in judgment, to save all the meek of the earth.

75:11. For the thought of man shall give praise to thee:  and the
remainders of the thought shall keep holiday to thee.

75:12. Vow ye, and pay to the Lord your God:  all you that are round
about him bring presents.  To him that is terrible,

75:13. Even to him who taketh away the spirit of princes:  to the
terrible with the kings of the earth.



Psalms Chapter 76


Voce mea.

The faithful have recourse to God in trouble of mind, with confidence
in his mercy and power.

76:1. Unto the end, for Idithun, a psalm of Asaph.

76:2. I cried to the Lord with my voice; to God with my voice, and he
gave ear to me.

76:3. In the days of my trouble I sought God, with my hands lifted up
to him in the night, and I was not deceived.  My soul refused to be
comforted:

76:4. I remembered God, and was delighted, and was exercised, and my
spirit swooned away.

76:5. My eyes prevented the watches:  I was troubled, and I spoke not.

76:6. I thought upon the days of old:  and I had in my mind the eternal
years.

76:7. And I meditated in the night with my own heart:  and I was
exercised and I swept my spirit.

76:8. Will God then cast off for ever?  or will he never be more
favourable again?

76:9. Or will he cut off his mercy for ever, from generation to
generation?

76:10. Or will God forget to shew mercy?  or will he in his anger shut
up his mercies?

76:11. And I said, Now have I begun:  this is the change of the right
hand of the most High.

76:12. I remembered the works of the Lord:  for I will be mindful of thy
wonders from the beginning.

76:13. And I will meditate on all thy works:  and will be employed in
thy inventions.

76:14. Thy way, O God, is in the holy place:  who is the great God like
our God?

76:15. Thou art the God that dost wonders.  Thou hast made thy power
known among the nations:

76:16. With thy arm thou hast redeemed thy people the children of Jacob
and of Joseph.

76:17. The waters saw thee, O God, the waters saw thee:  and they were
afraid, and the depths were troubled.

76:18. Great was the noise of the waters:  the clouds sent out a sound.
For thy arrows pass:

76:19. The voice of thy thunder in a wheel.  Thy lightnings enlightened
the world:  the earth shook and trembled.

76:20. Thy way is in the sea, and thy paths in many waters:  and thy
footsteps shall not be known.

76:21. Thou hast conducted thy people like sheep, by the hand of Moses
and Aaron.



Psalms Chapter 77


Attendite.

God's great benefits to the people of Israel, notwithstanding their
ingratitude.

77:1. Understanding for Asaph.  Attend, O my people, to my law:  incline
your ears to the words of my mouth.

77:2. I will open my mouth in parables:  I will utter propositions from
the beginning.

Propositions. . .Deep and mysterious sayings.  By this it appears that
the historical facts of ancient times, commemorated in this psalm, were
deep and mysterious:  as being figures of great truths appertaining to
the time of the New Testament.

77:3. How great things have we heard and known, and our fathers have
told us.

77:4. They have not been hidden from their children, in another
generation.  Declaring the praises of the Lord, and his powers, and his
wonders which he hath done.

77:5. And he set up a testimony in Jacob:  and made a law in Israel.  How
great things he commanded our fathers, that they should make the same
known to their children:

77:6. That another generation might know them.  The children that should
be born and should rise up, and declare them to their children.

77:7. That they may put their hope in God and may not forget the works
of God:  and may seek his commandments.

77:8. That they may not become like their fathers, a perverse and
exasperating generation.  A generation that set not their heart aright:
and whose spirit was not faithful to God.

77:9. The sons of Ephraim who bend and shoot with the bow:  they have
turned back in the day of battle.

77:10. They kept not the covenant of God:  and in his law they would not
walk.

77:11. And they forgot his benefits, and his wonders that he had shewn
them.

77:12. Wonderful things did he do in the sight of their fathers, in the
land of Egypt, in the field of Tanis.

77:13. He divided the sea and brought them through:  and he made the
waters to stand as in a vessel.

77:14. And he conducted them with a cloud by day:  and all the night
with a light of fire.

77:15. He struck the rock in the wilderness:  and gave them to drink, as
out of the great deep.

77:16. He brought forth water out of the rock:  and made streams run
down as rivers.

77:17. And they added yet more sin against him:  they provoked the most
High to wrath in the place without water.

77:18. And they tempted God in their hearts, by asking meat for their
desires.

77:19. And they spoke ill of God:  they said:  Can God furnish a table in
the wilderness?

77:20. Because he struck the rock, and the waters gushed out, and the
streams overflowed.  Can he also give bread, or provide a table for his
people?

77:21. Therefore the Lord heard, and was angry:  and a fire was kindled
against Jacob, and wrath came up against Israel.

77:22. Because they believed not in God:  and trusted not in his
salvation.

77:23. And he had commanded the clouds from above, and had opened the
doors of heaven.

77:24. And had rained down manna upon them to eat, and had given them
the bread of heaven.

77:25. Man ate the bread of angels:  he sent them provisions in
abundance.

77:26. He removed the south wind from heaven:  and by his power brought
in the southwest wind.

77:27. And he rained upon them flesh as dust:  and feathered fowls like
as the sand of the sea.

77:28. And they fell in the midst of their camp, round about their
pavilions.

77:29. So they did eat, and were filled exceedingly, and he gave them
their desire:

77:30. they were not defrauded of that which they craved.  As yet their
meat was in their mouth:

77:31. And the wrath of God came upon them.  And he slew the fat ones
amongst them, and brought down the chosen men of Israel.

77:32. In all these things they sinned still:  and they behaved not for
his wondrous works.

77:33. And their days were consumed in vanity, and their years in
haste.

77:34. When he slew them, then they sought him:  and they returned, and
came to him early in the morning.

77:35. And they remembered that God was their helper:  and the most high
God their redeemer.

77:36. And they loved him with their mouth:  and with their tongue they
lied unto him:

77:37. But their heart was not right with him:  nor were they counted
faithful in his covenant.

77:38. But he is merciful, and will forgive their sins:  and will not
destroy them.  And many a time did he turn away his anger:  and did not
kindle all his wrath.

77:39. And he remembered that they are flesh:  a wind that goeth and
returneth not.

77:40. How often did they provoke him in the desert:  and move him to
wrath in the place without water?

77:41. And they turned back and tempted God:  and grieved the holy one
of Israel.

77:42. They remembered not his hand, in the day that he redeemed them
from the hand of him that afflicted them:

77:43. How he wrought his signs in Egypt, and his wonders in the field
of Tanis.

77:44. And he turned their rivers into blood, and their showers that
they might not drink.

77:45. He sent amongst them divers sorts of flies, which devoured them:
and frogs which destroyed them.

77:46. And he gave up their fruits to the blast, and their labours to
the locust.

77:47. And he destroyed their vineyards with hail, and their mulberry
trees with hoarfrost.

77:48. And he gave up their cattle to the hail, and their stock to the
fire.

77:49. And he sent upon them the wrath of his indignation:  indignation
and wrath and trouble, which he sent by evil angels.

77:50. He made a way for a path to his anger:  he spared not their souls
from death, and their cattle he shut up in death.

77:51. And he killed all the firstborn in the land of Egypt:  the
firstfruits of all their labour in the tabernacles of Cham.

77:52. And he took away his own people as sheep:  and guided them in the
wilderness like a flock.

77:53. And he brought them out in hope and they feared not:  and the sea
overwhelmed their enemies.

77:54. And he brought them into the mountain of his sanctuary:  the
mountain which his right hand had purchased.  And he cast out the
Gentiles before them:  and by lot divided to them their land by a line
of distribution.

77:55. And he made the tribes of Israel to dwell in their tabernacles.

77:56. Yet they tempted, and provoked the most high God:  and they kept
not his testimonies.

77:57. And they turned away, and kept not the covenant:  even like their
fathers they were turned aside as a crooked bow.

77:58. They provoked him to anger on their hills:  and moved him to
jealousy with their graven things.

77:59. God heard, and despised them, and he reduced Israel exceedingly
as it were to nothing.

77:60. And he put away the tabernacle of Silo, his tabernacle where he
dwelt among men.

77:61. And he delivered their strength into captivity:  and their beauty
into the hands of the enemy.

77:62. And he shut up his people under the sword:  and he despised his
inheritance.

77:63. Fire consumed their young men:  and their maidens were not
lamented.

77:64. Their priests fell by the sword:  and their widows did not mourn.

77:65. And the Lord was awaked as one out of sleep, and like a mighty
man that hath been surfeited with wine.

77:66. And he smote his enemies on the hinder parts:  he put them to an
everlasting reproach.

77:67. And he rejected the tabernacle of Joseph:  and chose not the
tribe of Ephraim:

77:68. But he chose the tribe of Juda, mount Sion which he loved.

77:69. And he built his sanctuary as of unicorns, in the land which he
founded for ever.

As of unicorns. . .That is, firm and strong like the horn of the
unicorn.  This is one of the chiefest of the propositions of this psalm,
foreshewing the firm establishment of the one, true, and everlasting
sanctuary of God, in his church.

77:70. And he chose his servant David, and took him from the flocks of
sheep:  he brought him from following the ewes great with young,

77:71. To feed Jacob his servant and Israel his inheritance.

77:72. And he fed them in the innocence of his heart:  and conducted
them by the skilfulness of his hands.



Psalms Chapter 78


Deus, venerunt gentes.

The church in time of persecution prayeth for relief.  It seems to
belong to the time of the Machabees.

78:1. A psalm for Asaph.  O God, the heathens are come into thy
inheritance, they have defiled thy holy temple:  they have made
Jerusalem as a place to keep fruit.

78:2. They have given the dead bodies of thy servants to be meat for
the fowls of the air:  the flesh of thy saints for the beasts of the
earth.

78:3. They have poured out their blood as water, round about Jerusalem
and there was none to bury them.

78:4. We are become a reproach to our neighbours:  a scorn and derision
to them that are round about us.

78:5. How long, O Lord, wilt thou be angry for ever:  shall thy zeal be
kindled like a fire?

78:6. Pour out thy wrath upon the nations that have not known thee:  and
upon the kingdoms that have not called upon thy name.

78:7. Because they have devoured Jacob; and have laid waste his place.

78:8. Remember not our former iniquities:  let thy mercies speedily
prevent us, for we are become exceeding poor.

78:9. Help us, O God, our saviour:  and for the glory of thy name, O
Lord, deliver us:  and forgive us our sins for thy name's sake:

78:10. Lest they should say among the Gentiles:  Where is their God?  And
let him be made known among the nations before our eyes, By the
revenging the blood of thy servants, which hath been shed:

78:11. Let the sighing of the prisoners come in before thee.  According
to the greatness of thy arm, take possession of the children of them
that have been put to death.

78:12. And render to our neighbours sevenfold in their bosom:  the
reproach wherewith they have reproached thee, O Lord.

78:13. But we thy people, and the sheep of thy pasture, will give
thanks to thee for ever.  We will shew forth thy praise, unto generation
and generation.



Psalms Chapter 79


Qui regis Israel.

A prayer for the church in tribulation, commemorating God's former
favours.

79:1. Unto the end, for them that shall be changed, a testimony for
Asaph, a psalm.

79:2. Give ear, O thou that rulest Israel:  thou that leadest Joseph
like a sheep.  Thou that sittest upon the cherubims, shine forth

79:3. Before Ephraim, Benjamin, and Manasses.  Stir up thy might, and
come to save us.

79:4. Convert us, O God:  and shew us thy face, and we shall be saved.

79:5. O Lord God of hosts, how long wilt thou be angry against the
prayer of thy servant?

79:6. How long wilt thou feed us with the bread of tears:  and give us
for our drink tears in measure?

79:7. Thou hast made us to be a contradiction to our neighbours:  and
our enemies have scoffed at us.

79:8. O God of hosts, convert us:  and shew thy face, and we shall be
saved.

79:9. Thou hast brought a vineyard out of Egypt:  thou hast cast out the
Gentiles and planted it.

79:10. Thou wast the guide of its journey in its sight:  thou plantedst
the roots thereof, and it filled the land.

79:11. The shadow of it covered the hills:  and the branches thereof the
cedars of God.

79:12. It stretched forth its branches unto the sea, and its boughs
unto the river.

79:13. Why hast thou broken down the hedge thereof, so that all they
who pass by the way do pluck it?

79:14. The boar out of the wood hath laid it waste:  and a singular wild
beast hath devoured it.

79:15. Turn again, O God of hosts, look down from heaven, and see, and
visit this vineyard:

79:16. And perfect the same which thy right hand hath planted:  and upon
the son of man whom thou hast confirmed for thyself.

79:17. Things set on fire and dug down shall perish at the rebuke of
thy countenance.

Things set on fire, etc. . .So this vineyard of thine, almost consumed
already, must perish, if thou continue thy rebukes.

79:18. Let thy hand be upon the man of thy right hand:  and upon the son
of man whom thou hast confirmed for thyself.

The man of thy right hand. . .Christ.

79:19. And we depart not from thee, thou shalt quicken us:  and we will
call upon thy name.

79:20. O Lord God of hosts, convert us and shew thy face, and we shall
be saved.



Psalms Chapter 80


Exultate Deo.

An invitation to a solemn praising of God.

80:1. Unto the end, for the winepresses, a psalm for Asaph himself.

For the winepresses, etc. . .Torcularibus.  It either signifies a musical
instrument, or that this psalm was to be sung at the feast of the
tabernacles after the gathering in of the vintage.

80:2. Rejoice to God our helper:  sing aloud to the God of Jacob.

80:3. Take a psalm, and bring hither the timbrel:  the pleasant psaltery
with the harp.

80:4. Blow up the trumpet on the new moon, on the noted day of your
solemnity.

80:5. For it is a commandment in Israel, and a judgment to the God of
Jacob.

80:6. He ordained it for a testimony in Joseph, when he came out of the
land of Egypt:  he heard a tongue which he knew not.

80:7. He removed his back from the burdens:  his hands had served in
baskets.

80:8. Thou calledst upon me in affliction, and I delivered thee:  I
heard thee in the secret place of tempest:  I proved thee at the waters
of contradiction.

In the secret place of tempest. . .Heb., Of thunder.  When thou soughtest
to hide thyself from the tempest:  or, when I came down to mount Sina,
hidden from thy eyes in a storm of thunder.

80:9. Hear, O my people, and I will testify to thee:  O Israel, if thou
wilt hearken to me,

80:10. there shall be no new god in thee:  neither shalt
thou adore a strange god.

80:11. For I am the Lord thy God, who brought thee out of the land of
Egypt:  open thy mouth wide, and I will fill it.

80:12. But my people heard not my voice:  and Israel hearkened not to
me.

80:13. So I let them go according to the desires of their heart:  they
shall walk in their own inventions.

80:14. If my people had heard me:  if Israel had walked in my ways:

80:15. I should soon have humbled their enemies, and laid my hand on
them that troubled them.

80:16. The enemies of the Lord have lied to him:  and their time shall
be for ever.

Their time shall be forever. . .Impenitent sinners shall suffer for
ever.

80:17. And he fed them with the fat of wheat, and filled them with
honey out of the rock.



Psalms Chapter 81


Deus stetit.

An exhortation to judges and men in power.

81:1. A psalm for Asaph.  God hath stood in the congregation of gods:
and being in the midst of them he judgeth gods.

81:2. How long will you judge unjustly:  and accept the persons of the
wicked?

81:3. Judge for the needy and fatherless:  do justice to the humble and
the poor.

81:4. Rescue the poor; and deliver the needy out of the hand of the
sinner.

81:5. They have not known nor understood:  they walk on in darkness:  all
the foundations of the earth shall be moved.

81:6. I have said:  You are gods and all of you the sons of the most
High.

81:7. But you like men shall die:  and shall fall like one of the
princes.

81:8. Arise, O God, judge thou the earth:  for thou shalt inherit among
all the nations.



Psalms Chapter 82


Deus, quis similis.

A prayer against the enemies of God's church.

82:1. A canticle of a psalm for Asaph.

82:2. O God, who shall be like to thee?  hold not thy peace, neither be
thou still, O God.

82:3. For lo, thy enemies have made a noise:  and they that hate thee
have lifted up the head.

82:4. They have taken a malicious counsel against thy people, and have
consulted against thy saints.

82:5. They have said:  Come and let us destroy them, so that they be not
a nation:  and let the name of Israel be remembered no more.

82:6. For they have contrived with one consent:  they have made a
covenant together against thee,

82:7. The tabernacle of the Edomites, and the Ishmahelites:  Moab, and
the Agarens,

82:8. Gebal, and Ammon and Amalec:  the Philistines, with the
inhabitants of Tyre.

82:9. Yea, and the Assyrian also is joined with them:  they are come to
the aid of the sons of Lot.

82:10. Do to them as thou didst to Madian and to Sisara:  as to Jabin at
the brook of Cisson.

82:11. Who perished at Endor:  and became as dung for the earth.

82:12. Make their princes like Oreb, and Zeb, and Zebee, and Salmana.
All their princes,

82:13. Who have said:  Let us possess the sanctuary of God for an
inheritance.

82:14. O my God, make them like a wheel; and as stubble before the
wind.

82:15. As fire which burneth the wood:  and as a flame burning
mountains:

82:16. So shalt thou pursue them with thy tempest:  and shalt trouble
them in thy wrath.

82:17. Fill their faces with shame; and they shall seek thy name, O
Lord.

82:18. Let them be ashamed and troubled for ever and ever:  and let them
be confounded and perish.

82:19. And let them know that the Lord is thy name:  thou alone art the
most High over all the earth.



Psalms Chapter 83


Quam dilecta.

The soul aspireth after heaven; rejoicing in the mean time, in being in
the communion of God's church upon earth.

83:1. Unto the end, for the winepresses, a psalm for the sons of Core.

83:2. How lovely are thy tabernacles, O Lord of hosts!

83:3. my soul longeth and fainteth for the courts of the Lord.  My heart
and my flesh have rejoiced in the living God.

83:4. For the sparrow hath found herself a house, and the turtle a nest
for herself where she may lay her young ones:  Thy altars, O Lord of
hosts, my king and my God.

83:5. Blessed are they that dwell in thy house, O Lord:  they shall
praise thee for ever and ever.

83:6. Blessed is the man whose help is from thee:  in his heart he hath
disposed to ascend by steps,

In his heart he hath disposed to ascend by steps, etc. . .Ascensiones in
corde suo disposuit.  As by steps men ascended to the temple of God
situated on a hill; so the good Christian ascends towards the eternal
temple by certain steps of virtue disposed or ordered within the heart:
and this whilst he lives as yet in the body, in this vale of tears, the
place which man hath set:  that is, which he hath brought himself to:
being cast out of paradise for his sin.

83:7. In the vale of tears, in the place which he hath set.

83:8. For the lawgiver shall give a blessing, they shall go from virtue
to virtue:  the God of gods shall be seen in Sion.

83:9. O Lord God of hosts, hear my prayer:  give ear, O God of Jacob.

83:10. Behold, O God our protector:  and look on the face of thy Christ.

83:11. For better is one day in thy courts above thousands.  I have
chosen to be an abject in the house of my God, rather than to dwell in
the tabernacles of sinners.

83:12. For God loveth mercy and truth:  the Lord will give grace and
glory.

83:13. He will not deprive of good things them that walk in innocence:
O Lord of hosts, blessed is the man that trusteth in thee.



Psalms Chapter 84


Benedixisti, Domine.

The coming of Christ, to bring peace and salvation to man.

84:1. Unto the end, for the sons of Core, a psalm.

84:2. Lord, thou hast blessed thy land:  thou hast turned away the
captivity of Jacob.

84:3. Thou hast forgiven the iniquity of thy people:  thou hast covered
all their sins.

84:4. Thou hast mitigated all thy anger:  thou hast turned away from the
wrath of thy indignation.

84:5. Convert us, O God our saviour:  and turn off thy anger from us.

84:6. Wilt thou be angry with us for ever:  or wilt thou extend thy
wrath from generation to generation?

84:7. Thou wilt turn, O God, and bring us to life:  and thy people shall
rejoice in thee.

84:8. Shew us, O Lord, thy mercy; and grant us thy salvation.

84:9. I will hear what the Lord God will speak in me:  for he will speak
peace unto his people:  And unto his saints:  and unto them that are
converted to the heart.

84:10. Surely his salvation is near to them that fear him :  that glory
may dwell in our land.

84:11. Mercy and truth have met each other:  justice and peace have
kissed.

84:12. Truth is sprung out of the earth:  and justice hath looked down
from heaven.

84:13. For the Lord will give goodness:  and our earth shall yield her
fruit.

84:14. Justice shall walk before him:  and ,shall set his steps in the
way.



Psalms Chapter 85


Inclina, Domine.

A prayer for God's grace to assist us to the end.

85:1. A prayer for David himself.  Incline thy ear, O Lord, and hear me:
for I am needy and poor.

85:2. Preserve my soul, for I am holy:  save thy servant, O my God, that
trusteth in thee.

I am holy. . .I am by my office and profession dedicated to thy service.

85:3. Have mercy on me, O Lord, for I have cried to thee all the day.

85:4. Give joy to the soul of thy servant, for to thee, O Lord, I have
lifted up my soul.

85:5. For thou, O Lord, art sweet and mild:  and plenteous in mercy to
all that call upon thee.

85:6. Give ear, O Lord, to my prayer:  and attend to the voice of my
petition.

85:7. I have called upon thee in the day of my trouble:  because thou
hast heard me.

85:8. There is none among the gods like unto thee, O Lord:  and there is
none according to thy works.

85:9. All the nations thou hast made shall come and adore before thee,
O Lord:  and they shall glorify thy name.

85:10. For thou art great and dost wonderful things:  thou art God
alone.

85:11. Conduct me, O Lord, in thy way, and I will walk in thy truth:
let my heart rejoice that it may fear thy name.

85:12. I will praise thee, O Lord my God, with my whole heart, and I
will glorify thy name for ever:

85:13. For thy mercy is great towards me:  and thou hast delivered my
soul out of the lower hell.

85:14. O God, the wicked are risen up against me, and the assembly of
the mighty have sought my soul:  and they have not set thee before their
eyes.

85:15. And thou, O Lord, art a God of compassion, and merciful,
patient, and of much mercy, and true.

85:16. O look upon me, and have mercy on me:  give thy command to thy
servant, and save the son of thy handmaid.

85:17. Shew me a token for good:  that they who hate me may see, and be
confounded, because thou, O Lord, hast helped me and hast comforted me.



Psalms Chapter 86


Fundamenta ejus.

The glory of the church of Christ.

86:1. For the sons of Core, a psalm of a canticle.  The foundations
thereof are the holy mountains:

The holy mountains. . .The apostles and prophets.  Eph. 2.20.

86:2. The Lord loveth the gates of Sion above all the tabernacles of
Jacob.

86:3. Glorious things are said of thee, O city of God.

86:4. I will be mindful of Rahab and of Babylon knowing me.  Behold the
foreigners, and Tyre, and the people of the Ethiopians, these were
there.

Rahab. . .Egypt, etc.  To this Sion, which is the church of God, many
shall resort from all nations.

86:5. Shall not Sion say:  This man and that man is born in her?  and the
Highest himself hath founded her.

Shall not Sion say, etc. . .The meaning is, that Sion, viz., the church,
shall not only be able to commemorate this or that particular person of
renown born in her, but also to glory in great multitudes of people and
princes of her communion; who have been foretold in the writings of the
prophets, and registered in the writings of the apostles.

86:6. The Lord shall tell in his writings of peoples and of princes, of
them that have been in her.

86:7. The dwelling in thee is as it were of all rejoicing.



Psalms Chapter 87


Domine, Deus salutis.

A prayer of one under grievous affliction:  it agrees to Christ in his
passion, and alludes to his death and burial.

87:1. A canticle of a psalm for the sons of Core:  unto the end, for
Maheleth, to answer understanding of Eman the Ezrahite.

Maheleth. . .A musical instrument, or chorus of musicians, to answer one
another.--Ibid.  Understanding. . .Or a psalm of instruction, composed by
Eman the Ezrahite, or by David, in his name.

87:2. O Lord, the God of my salvation:  I have cried in the day, and in
the night before thee.

87:3. Let my prayer come in before thee:  incline thy ear to my
petition.

87:4. For my soul is filled with evils:  and my life hath drawn nigh to
hell.

87:5. I am counted among them that go down to the pit:  I am become as a
man without help,

87:6. Free among the dead.  Like the slain sleeping in the sepulchres,
whom thou rememberest no more:  and they are cut off from thy hand.

87:7. They have laid me in the lower pit:  in the dark places, and in
the shadow of death.

87:8. Thy wrath is strong over me:  and all thy waves thou hast brought
in upon me.

87:9. Thou hast put away my acquaintance far from me:  they have set me
an abomination to themselves.  I was delivered up, and came not forth:

87:10. My eyes languished through poverty.  All the day I cried to thee,
O Lord:  I stretched out my hands to thee.

87:11. Wilt thou shew wonders to the dead?  or shall physicians raise to
life, and give praise to thee?

87:12. Shall any one in the sepulchre declare thy mercy:  and thy truth
in destruction?

87:13. Shall thy wonders be known in the dark; and thy justice in the
land of forgetfulness?

87:14. But I, O Lord, have cried to thee:  and in the morning my prayer
shall prevent thee.

87:15. Lord, why castest thou off my prayer:  why turnest thou away thy
face from me?

87:16. I am poor, and in labours from my youth:  and being exalted have
been humbled and troubled.

87:17. Thy wrath hath come upon me:  and thy terrors have troubled me.

87:18. They have come round about me like water all the day:  they have
compassed me about together.

87:19. Friend and neighbour thou hast put far from me:  and my
acquaintance, because of misery.



Psalms Chapter 88


Misericordias Domini.

The perpetuity of the church of Christ, in consequence of the promise
of God:  which, notwithstanding, God permits her to suffer sometimes
most grievous afflictions.

88:1. Of understanding, for Ethan the Ezrahite.

88:2. The mercies of the Lord I will sing for ever.  I will shew forth
thy truth with my mouth to generation and generation.

88:3. For thou hast said:  Mercy shall be built up for ever in the
heavens:  thy truth shall be prepared in them.

88:4. I have made a covenant with my elect:  I have sworn to David my
servant:

88:5. Thy seed will I settle for ever.  And I will build up thy throne
unto generation and generation.

88:6. The heavens shall confess thy wonders, O Lord:  and thy truth in
the church of the saints.

88:7. For who in the clouds can be compared to the Lord:  or who among
the sons of God shall be like to God?

88:8. God, who is glorified in the assembly of the saints:  great and
terrible above all them that are about him.

88:9. O Lord God of hosts, who is like to thee?  thou art mighty, O
Lord, and thy truth is round about thee.

88:10. Thou rulest the power of the sea:  and appeasest the motion of
the waves thereof.

88:11. Thou hast humbled the proud one, as one that is slain:  with the
arm of thy strength thou hast scattered thy enemies.

88:12. Thine are the heavens, and thine is the earth:  the world and the
fulness thereof thou hast founded:

88:13. The north and the sea thou hast created.  Thabor and Hermon shall
rejoice in thy name:

88:14. Thy arm is with might.  Let thy hand be strengthened, and thy
right hand exalted:

88:15. Justice and judgment are the preparation of thy throne.  Mercy
and truth shall go before thy face:

88:16. Blessed is the people that knoweth jubilation.  They shall walk,
O Lord, in the light of thy countenance:

88:17. And in thy name they shall rejoice all the day, and in thy
justice they shall be exalted.

88:18. For thou art the glory of their strength:  and in thy good
pleasure shall our horn be exalted.

88:19. For our protection is of the Lord, and of our king the holy one
of Israel.

88:20. Then thou spokest in a vision to thy saints, and saidst:  I have
laid help upon one that is mighty, and have exalted one chosen out of
my people.

88:21. I have found David my servant:  with my holy oil I have anointed
him.

88:22. For my hand shall help him:  and my arm shall strengthen him.

88:23. The enemy shall have no advantage over him:  nor the son of
iniquity have power to hurt him.

88:24. And I will cut down his enemies before his face; and them that
hate him I will put to flight.

88:25. And my truth and my mercy shall be with him:  and in my name
shall his horn be exalted.

88:26. And I will set his hand in the sea; and his right hand in the
rivers.

88:27. He shall cry out to me:  Thou art my father:  my God, and the
support of my salvation.

88:28. And I will make him my firstborn, high above the kings of the
earth.

88:29. I will keep my mercy for him for ever:  and my covenant faithful
to him.

88:30. And I will make his seed to endure for evermore:  and his throne
as the days of heaven.

88:31. And if his children forsake my law, and walk not in my
judgments:

88:32. If they profane my justices:  and keep not my commandments:

88:33. I will visit their iniquities with a rod and their sins with
stripes.

88:34. But my mercy I will not take away from him:  nor will I suffer my
truth to fail.

88:35. Neither will I profane my covenant:  and the words that proceed
from my mouth I will not make void.

88:36. Once have I sworn by my holiness:  I will not lie unto David:

88:37. His seed shall endure for ever.

88:38. And his throne as the sun before me:  and as the moon perfect for
ever, and a faithful witness in heaven.

88:39. But thou hast rejected and despised:  thou hast been angry with
my anointed.

88:40. Thou hast overthrown the covenant of thy servant:  thou hast
profaned his sanctuary on the earth.

Overthrown the covenant, etc. . .All this seems to relate to the time of
the captivity of Babylon, in which, for the sins of the people and
their princes, God seemed to have set aside for a while the covenant he
made with David.

88:41. Thou hast broken down all his hedges:  thou hast made his
strength fear.

88:42. All that pass by the way have robbed him:  he is become a
reproach to his neighbours.

88:43. Thou hast set up the right hand of them that oppress him:  thou
hast made all his enemies to rejoice.

88:44. Thou hast turned away the help of his sword; and hast not
assisted him in battle.

88:45. Thou hast made his purification to cease:  and thou hast cast his
throne down to the ground.

88:46. Thou hast shortened the days of his time:  thou hast covered him
with confusion.

88:47. How long, O Lord, turnest thou away unto the end?  shall thy
anger burn like fire?

88:48. Remember what my substance is:  for hast thou made all the
children of men in vain?

88:49. Who is the man that shall live, and not see death:  that shall
deliver his soul from the hand of hell?

88:50. Lord, where are thy ancient mercies, according to what thou
didst swear to David in thy truth?

88:51. Be mindful, O Lord, of the reproach of thy servants (which I
have held in my bosom) of many nations:

88:52. Wherewith thy enemies have reproached, O Lord; wherewith they
have reproached the change of thy anointed.

88:53. Blessed be the Lord for evermore.  So be it.  So be it.



Psalms Chapter 89


Domine, refugium.

A prayer for the mercy of God:  recounting the shortness and miseries of
the days of man.

89:1. A prayer of Moses the man of God.  Lord, thou hast been our refuge
from generation to generation.

89:2. Before the mountains were made, or the earth and the world was
formed; from eternity and to eternity thou art God.

89:3. Turn not man away to be brought low:  and thou hast said:  Be
converted, O ye sons of men.

Turn not man away, etc. . .Suffer him not quite to perish from thee,
since thou art pleased to call upon him to be converted to thee.

89:4. For a thousand years in thy sight are as yesterday, which is
past.  And as a watch in the night,

89:5. Things that are counted nothing, shall their years be.

89:6. In the morning man shall grow up like grass; in the morning he
shall flourish and pass away:  in the evening he shall fall, grow dry,
and wither.

89:7. For in thy wrath we have fainted away:  and are troubled in thy
indignation.

89:8. Thou hast set our iniquities before thy eyes:  our life in the
light of thy countenance.

89:9. For all our days are spent; and in thy wrath we have fainted
away.  Our years shall be considered as a spider:

As a spider. . .As frail and weak as a spider's web; and miserable
withal, whilst like a spider we spend our bowels in weaving webs to
catch flies.

89:10. The days of our years in them are threescore and ten years.  But
if in the strong they be fourscore years:  and what is more of them is
labour and sorrow.  For mildness is come upon us:  and we shall be
corrected.

Mildness is come upon us, etc. . .God's mildness corrects us; inasmuch
as he deals kindly with us, in shortening the days of this miserable
life; and so weaning our affections from all its transitory enjoyments,
and teaching us true wisdom.

89:11. Who knoweth the power of thy anger, and for thy fear

89:12. Can number thy wrath?  So make thy right hand known:  and men
learned in heart, in wisdom.

89:13. Return, O Lord, how long?  and be entreated in favour of thy
servants.

89:14. We are filled in the morning with thy mercy:  and we have
rejoiced, and are delighted all our days.

89:15. We have rejoiced for the days in which thou hast humbled us:  for
the years in which we have seen evils.

89:16. Look upon thy servants and upon their works:  and direct their
children.

89:17. And let the brightness of the Lord our God be upon us:  and
direct thou the works of our hands over us; yea, the work of our hands
do thou direct.



Psalms Chapter 90


Qui habitat.

The just is secure under the protection of God.

90:1. The praise of a canticle for David.  He that dwelleth in the aid
of the most High, shall abide under the protection of the God of Jacob.

90:2. He shall say to the Lord:  Thou art my protector, and my refuge:
my God, in him will I trust.

90:3. For he hath delivered me from the snare of the hunters:  and from
the sharp word.

90:4. He will overshadow thee with his shoulders:  and under his wings
thou shalt trust.

90:5. His truth shall compass thee with a shield:  thou shalt not be
afraid of the terror of the night.

90:6. Of the arrow that flieth in the day, of the business that walketh
about in the dark:  of invasion, or of the noonday devil.

90:7. A thousand shall fall at thy side, and ten thousand at thy right
hand:  but it shall not come nigh thee.

90:8. But thou shalt consider with thy eyes:  and shalt see the reward
of the wicked.

90:9. Because thou, O Lord, art my hope:  thou hast made the most High
thy refuge.

90:10. There shall no evil come to thee:  nor shall the scourge come
near thy dwelling.

90:11. For he hath given his angels charge over thee; to keep thee in
all thy ways.

90:12. In their hands they shall bear thee up:  lest thou dash thy foot
against a stone.

90:13. Thou shalt walk upon the asp and the basilisk:  and thou shalt
trample under foot the lion and the dragon.

90:14. Because he hoped in me I will deliver him:  I will protect him
because he hath known my name.

90:15. He shall cry to me, and I will hear him:  I am with him in
tribulation, I will deliver him, and I will glorify him.

90:16. I will fill him with length of days; and I will shew him my
salvation.



Psalms Chapter 91


Bonum est confiteri.

God is to be praised for his wondrous works.

91:1. A psalm of a canticle on the sabbath day.

91:2. It is good to give praise to the Lord:  and to sing to thy name, O
most High.

91:3. To shew forth thy mercy in the morning, and thy truth in the
night:

91:4. Upon an instrument of ten strings, upon the psaltery:  with a
canticle upon the harp.

91:5. For thou hast given me, O Lord, a delight in thy doings:  and in
the works of thy hands I shall rejoice.

91:6. O Lord, how great are thy works! thy thoughts are exceeding deep.

91:7. The senseless man shall not know:  nor will the fool understand
these things.

91:8. When the wicked shall spring up as grass:  and all the workers of
iniquity shall appear:  That they may perish for ever and ever:

91:9. But thou, O Lord, art most high for evermore.

91:10. For behold thy enemies, O lord, for behold thy enemies shall
perish:  and all the workers of iniquity shall be scattered.

91:11. But my horn shall be exalted like that of the unicorn:  and my
old age in plentiful mercy.

91:12. My eye also hath looked down upon my enemies:  and my ear shall
hear of the downfall of the malignant that rise up against me.

91:13. The just shall flourish like the palm tree:  he shall grow up
like the cedar of Libanus.

91:14. They that are planted in the house of the Lord shall flourish in
the courts of the house of our God.

91:15. They shall still increase in a fruitful old age:  and shall be
well treated,

91:16. That they may shew, That the Lord our God is righteous, and
there is no iniquity in him.



Psalms Chapter 92


Dominus regnavit.

The glory and stability of the kingdom; that is, of the church of
Christ.

Praise in the way of a canticle, for David himself, on the day before
the sabbath, when the earth was founded.

92:1. The Lord hath reigned, he is clothed with beauty:  the Lord is
clothed with strength, and hath girded himself.  For he hath established
the world which shall not be moved.

92:2. My throne is prepared from of old:  thou art from everlasting.

92:3. The floods have lifted up, O Lord:  the floods have lifted up
their voice.  The floods have lifted up their waves,

92:4. With the noise of many waters.  Wonderful are the surges of the
sea:  wonderful is the Lord on high.

92:5. Thy testimonies are become exceedingly credible:  holiness
becometh thy house, O Lord, unto length of days.



Psalms Chapter 93


Deus ultionum.

God shall judge and punish the oppressors of his people.

A psalm for David himself on the fourth day of the week.

93:1. The Lord is the God to whom revenge belongeth:  the God of revenge
hath acted freely.

93:2. Lift up thyself, thou that judgest the earth:  render a reward to
the proud.

93:3. How long shall sinners, O Lord:  how long shall sinners glory?

93:4. Shall they utter, and speak iniquity:  shall all speak who work
injustice?

93:5. Thy people, O Lord, they have brought low:  and they have
afflicted thy inheritance.

93:6. They have slain the widow and the stranger:  and they have
murdered the fatherless.

93:7. And they have said:  The Lord shall not see:  neither shall the God
of Jacob understand.

93:8. Understand, ye senseless among the people:  and, you fools, be
wise at last.

93:9. He that planted the ear, shall he not hear?  or he that formed the
eye, doth he not consider?

93:10. He that chastiseth nations, shall he not rebuke:  he that
teacheth man knowledge?

93:11. The Lord knoweth the thoughts of men, that they are vain.

93:12. Blessed is the man whom thou shalt instruct, O Lord:  and shalt
teach him out of thy law.

93:13. That thou mayst give him rest from the evil days:  till a pit be
dug for the wicked.

Rest from the evil days. . .That thou mayst mitigate the sorrows, to
which he is exposed, during the short and evil days of his mortality.

93:14. For the Lord will not cast off his people:  neither will he
forsake his own inheritance.

93:15. Until justice be turned into judgment:  and they that are near it
are all the upright in heart.

Until justice be turned into judgment, etc. . .By being put in
execution; which will be agreeable to all the upright in heart.

93:16. Who shall rise up for me against the evildoers?  or who shall
stand with me against the workers of iniquity?

93:17. Unless the Lord had been my helper, my soul had almost dwelt in
hell.

93:18. If I said:  My foot is moved:  thy mercy, O Lord, assisted me.

93:19. According to the multitude of my sorrows in my heart, thy
comforts have given joy to my soul.

93:20. Doth the seat of iniquity stick to thee, who framest labour in
commandment?

Doth the seat of iniquity stick to thee, etc. . .That is, wilt thou, O
God, who art always just, admit of the seat of iniquity:  that is, of
injustice, or unjust judges, to have any partnership with thee?  Thou
who framest, or makest, labour in commandment, that is, thou who
obligest us to labour with all diligence to keep thy commandments.

93:21. They will hunt after the soul of the just, and will condemn
innocent blood.

93:22. But the Lord is my refuge:  and my God the help of my hope.

93:23. And he will render them their iniquity :  and in their malice he
will destroy them:  the Lord our God will destroy them.



Psalms Chapter 94


Venite exultemus.

An invitation to adore and serve God, and to hear his voice.

Praise of a canticle for David himself.

94:1. Come let us praise the Lord with joy:  let us joyfully sing to God
our saviour.

94:2. Let us come before his presence with thanksgiving; and make a
joyful noise to him with psalms.

94:3. For the Lord is a great God, and a great King above all gods.

94:4. For in his hand are all the ends of the earth:  and the heights of
the mountains are his.

94:5. For the sea is his, and he made it:  and his hands formed the dry
land.

94:6. Come let us adore and fall down:  and weep before the Lord that
made us.

94:7. For he is the Lord our God:  and we are the people of his pasture
and the sheep of his hand.

94:8. To day if you shall hear his voice, harden not your hearts:

94:9. As in the provocation, according to the day of temptation in the
wilderness:  where your fathers tempted me, they proved me, and saw my
works.

94:10. Forty years long was I offended with that generation, and I
said:  These always err in heart.

94:11. And these men have not known my ways:  so I swore in my wrath
that they shall not enter into my rest.



Psalms Chapter 95


Cantate Domino.

An exhortation to praise God for the coming of Christ and his kingdom.

95:1. A canticle for David himself, when the house was built after the
captivity.  Sing ye to the Lord a new canticle:  sing to the Lord, all
the earth.

When the house was built, etc. . .Alluding to that time, and then
ordered to be sung:  but principally relating to the building of the
church of Christ, after our redemption from the captivity of Satan.

95:2. Sing ye to the Lord and bless his name:  shew forth his salvation
from day to day.

95:3. Declare his glory among the Gentiles:  his wonders among all
people.

95:4. For the Lord is great, and exceedingly to be praised:  he is to be
feared above all gods.

95:5. For all the gods of the Gentiles are devils:  but the Lord made
the heavens.

95:6. Praise and beauty are before him:  holiness and majesty in his
sanctuary.

95:7. Bring ye to the Lord, O ye kindreds of the Gentiles, bring ye to
the Lord glory and honour:

95:8. Bring to the Lord glory unto his name.  Bring up sacrifices, and
come into his courts:

95:9. Adore ye the Lord in his holy court.  Let all the earth be moved
at his presence.

95:10. Say ye among the Gentiles, the Lord hath reigned.  For he hath
corrected the world, which shall not be moved:  he will judge the people
with justice.

95:11. Let the heavens rejoice, and let the earth be glad, let the sea
be moved, and the fulness thereof:

95:12. The fields and all things that are in them shall be joyful.  Then
shall all the trees of the woods rejoice

95:13. before the face of the Lord, because he cometh:  because he
cometh to judge the earth.  He shall judge the world with justice, and
the people with his truth.



Psalms Chapter 96


Dominus regnavit.

All are invited to rejoice at the glorious coming and reign of Christ.

96:1. For the same David, when his land was restored again to him.  The
Lord hath reigned, let the earth rejoice:  let many islands be glad.

96:2. Clouds and darkness are round about him:  justice and judgment are
the establishment of his throne.

Clouds and darkness. . .The coming of Christ in the clouds with great
terror and majesty to judge the world, is here prophesied.

96:3. A fire shall go before him, and shall burn his enemies round
about.

96:4. His lightnings have shone forth to the world:  the earth saw and
trembled.

96:5. The mountains melted like wax, at the presence of the Lord:  at
the presence of the Lord of all the earth.

96:6. The heavens declared his justice:  and all people saw his glory.

96:7. Let them be all confounded that adore graven things, and that
glory in their idols.  Adore him, all you his angels:

96:8. Sion heard, and was glad.  And the daughters of Juda rejoiced,
because of thy judgments, O Lord.

96:9. For thou art the most high Lord over all the earth:  thou art
exalted exceedingly above all gods.

96:10. You that love the Lord, hate evil:  the Lord preserveth the souls
of his saints, he will deliver them out of the hand of the sinner.

96:11. Light is risen to the just, and joy to the right of heart.

96:12. Rejoice, ye just, in the Lord:  and give praise to the
remembrance of his holiness.



Psalms Chapter 97


Cantate Domino.

All are again invited to praise the Lord, for the victories of Christ.

97:1. A psalm for David himself.  Sing ye to the Lord a new canticle:
because he hath done wonderful things.  His right hand hath wrought for
him salvation, and his arm is holy.

97:2. The Lord hath made known his salvation:  he hath revealed his
justice in the sight of the Gentiles.

97:3. He hath remembered his mercy and his truth toward the house of
Israel.  All the ends of the earth have seen the salvation of our God.

97:4. Sing joyfully to God, all the earth; make melody, rejoice and
sing.

97:5. Sing praise to the Lord on the harp, on the harp, and with the
voice of a psalm:

97:6. With long trumpets, and sound of cornet.  Make a joyful noise
before the Lord our king:

97:7. Let the sea be moved and the fullness thereof:  the world and they
that dwell therein.

97:8. The rivers shall clap their hands, the mountains shall rejoice
together

97:9. At the presence of the Lord:  because he cometh to judge the
earth.  He shall judge the world with justice, and the people with
equity.



Psalms Chapter 98


Dominus regnavit.

The reign of the Lord in Sion:  that is, of Christ in his church.

98:1. A psalm for David himself.  The Lord hath reigned, let the people
be angry:  he that sitteth on the cherubims:  let the earth be moved.

Let the people be angry. . .Though many enemies rage, and the whole
earth be stirred up to oppose the reign of Christ, he shall still
prevail.

98:2. The lord is great in Sion, and high above all people.

98:3. Let them give praise to thy great name:  for it is terrible and
holy:

98:4. And the king's honour loveth judgment.  Thou hast prepared
directions:  thou hast done judgment and justice in Jacob.

Loveth judgment. . .Requireth discretion.--Ibid.  Directions. . .Most
right and just laws to direct men.

98:5. Exalt ye the Lord our God, and adore his footstool, for it is
holy.

Adore his footstool. . .The ark of the covenant was called, in the Old
Testament, God's footstool:  over which he was understood to sit, on his
propitiatory, or mercy seat, as on a throne, between the wings of the
cherubims, in the sanctuary:  to which the children of Israel paid a
great veneration.  But as this psalm evidently relates to Christ, and
the New Testament, where the ark has no place, the holy fathers
understand this text, of the worship paid by the church to the body and
blood of Christ in the sacred mysteries:  inasmuch as the humanity of
Christ is, as it were, the footstool of the divinity.  So St. Ambrose,
L. 3.  De Spiritu Sancto, c. 12.  And St. Augustine upon this psalm.

98:6. Moses and Aaron among his priests:  and Samuel among them that
call upon his name.  They called upon the Lord, and he heard them:

Moses and Aaron among his priests. . .By this it is evident, that Moses
also was a priest, and indeed the chief priest, inasmuch as he
consecrated Aaron, and offered sacrifice for him.  Lev. 8.  So that his
pre-eminence over Aaron makes nothing for lay church headship.

98:7. He spoke to them in the pillar of the cloud.  They kept his
testimonies, and the commandment which he gave them.

98:8. Thou didst hear them, O Lord our God:  thou wast a merciful God to
them, and taking vengeance on all their inventions.

All their inventions. . .that is, all the enterprises of their enemies
against them, as in the case of Core, Dathan, and Abiron.

98:9. Exalt ye the Lord our God, and adore at his holy mountain:  for
the Lord our God is holy.



Psalms Chapter 99


Jubilate Deo.

All are invited to rejoice in God the creator of all.

99:1. A psalm of praise.

99:2. Sing joyfully to God, all the earth:  serve ye the Lord with
gladness.  Come in before his presence with exceeding great joy.

99:3. Know ye that the Lord he is God:  he made us, and not we
ourselves.  We are his people and the sheep of his pasture.

99:4. Go ye into his gates with praise, into his courts with hymns:  and
give glory to him.  Praise ye his name:

99:5. For the Lord is sweet, his mercy endureth for ever, and his truth
to generation and generation.



Psalms Chapter 100


Misericordiam et judicium.

The prophet exhorteth all by his example, to follow mercy and justice.

100:1. A psalm for David himself.  Mercy and judgment I will sing to
thee, O Lord:  I will sing,

100:2. And I will understand in the unspotted way, when thou shalt come
to me.  I walked in the innocence of my heart, in the midst of my house.

I will understand, etc. . .That is, I will apply my mind, I will do my
endeavour, to know and to follow the perfect way of thy commandments:
not trusting to my own strength, but relying on thy coming to me by thy
grace.

100:3. I will not set before my eyes any unjust thing:  I hated the
workers of iniquities.

100:4. The perverse heart did not cleave to me:  and the malignant, that
turned aside from me, I would not know.

100:5. The man that in private detracted his neighbour, him did I
persecute.  With him that had a proud eye, and an unsatiable heart, I
would not eat.

100:6. My eyes were upon the faithful of the earth, to sit with me:  the
man that walked in the perfect way, he served me.

100:7. He that worketh pride shall not dwell in the midst of my house:
he that speaketh unjust things did not prosper before my eyes.

100:8. In the morning I put to death all the wicked of the land:  that I
might cut off all the workers of iniquity from the city of the Lord.



Psalms Chapter 101


Domine, exaudi.

A prayer for one in affliction:  the fifth penitential psalm.

101:1. The prayer of the poor man, when he was anxious, and poured out
his supplication before the Lord.

101:2. Hear, O Lord, my prayer:  and let my cry come to thee.

101:3. Turn not away thy face from me:  in the day when I am in trouble,
incline thy ear to me.  In what day soever I shall call upon thee, hear
me speedily.

101:4. For my days are vanished like smoke, and my bones are grown dry
like fuel for the fire.

101:5. I am smitten as grass, and my heart is withered:  because I
forgot to eat my bread.

101:6. Through the voice of my groaning, my bone hath cleaved to my
flesh.

101:7. I am become like to a pelican of the wilderness:  I am like a
night raven in the house.

A pelican, etc. . .I am become through grief, like birds that affect
solitude and darkness.

101:8. I have watched, and am become as a sparrow all alone on the
housetop.

101:9. All the day long my enemies reproached me:  and they that praised
me did swear against me.

101:10. For I did eat ashes like bread, and mingled my drink with
weeping.

101:11. Because of thy anger and indignation:  for having lifted me up
thou hast thrown me down.

101:12. My days have declined like a shadow, and I am withered like
grass.

101:13. But thou, O Lord, endurest for ever:  and thy memorial to all
generations.

101:14. Thou shalt arise and have mercy on Sion:  for it is time to have
mercy on it, for the time is come.

101:15. For the stones thereof have pleased thy servants:  and they
shall have pity on the earth thereof.

101:16. All the Gentiles shall fear thy name, O Lord, and all the kings
of the earth thy glory.

101:17. For the Lord hath built up Sion:  and he shall be seen in his
glory.

101:18. He hath had regard to the prayer of the humble:  and he hath not
despised their petition.

101:19. Let these things be written unto another generation:  and the
people that shall be created shall praise the Lord:

101:20. Because he hath looked forth from his high sanctuary:  from
heaven the Lord hath looked upon the earth.

101:21. That he might hear the groans of them that are in fetters:  that
he might release the children of the slain:

101:22. That they may declare the name of the Lord in Sion:  and his
praise in Jerusalem;

101:23. When the people assemble together, and kings, to serve the
Lord.

101:24. He answered him in the way of his strength:  Declare unto me the
fewness of my days.

He answered him in the way of his strength. . .That is, the people,
mentioned in the foregoing verse, or the penitent, in whose person this
psalm is delivered, answered the Lord in the way of his strength:  that
is, according to the best of his power and strength:  or when he was in
the flower of his age and strength:  inquiring after the fewness of his
days:  to know if he should live long enough to see the happy
restoration of Sion, etc.

101:25. Call me not away in the midst of my days:  thy years are unto
generation and generation.

101:26. In the beginning, O Lord, thou foundedst the earth:  and the
heavens are the works of thy hands.

101:27. They shall perish but thou remainest:  and all of them shall
grow old like a garment:  And as a vesture thou shalt change them, and
they shall be changed.

101:28. But thou art always the selfsame, and thy years shall not fail.

101:29. The children of thy servants shall continue and their seed
shall be directed for ever.



Psalms Chapter 102


Benedic, anima.

Thanksgiving to God for his mercies.

102:1. For David himself.  Bless the Lord, O my soul:  and let all that
is within me bless his holy name.

102:2. Bless the Lord, O my soul, and never forget all he hath done for
thee.

102:3. Who forgiveth all thy iniquities:  who healeth all thy diseases.

102:4. Who redeemeth thy life from destruction:  who crowneth thee with
mercy and compassion.

102:5. Who satisfieth thy desire with good things:  thy youth shall be
renewed like the eagle's.

102:6. The Lord doth mercies, and judgment for all that suffer wrong.

102:7. He hath made his ways known to Moses:  his wills to the children
of Israel.

102:8. The Lord is compassionate and merciful:  longsuffering and
plenteous in mercy.

102:9. He will not always be angry:  nor will he threaten for ever.

102:10. He hath not dealt with us according to our sins:  nor rewarded
us according to our iniquities.

102:11. For according to the height of the heaven above the earth:  he
hath strengthened his mercy towards them that fear him.

102:12. As far as the east is from the west, so far hath he removed our
iniquities from us.

102:13. As a father hath compassion on his children, so hath the Lord
compassion on them that fear him:

102:14. For he knoweth our frame.  He remembereth that we are dust:

102:15. Man's days are as grass, as the flower of the field so shall he
flourish.

102:16. For the spirit shall pass in him, and he shall not be:  and he
shall know his place no more.

102:17. But the mercy of the Lord is from eternity and unto eternity
upon them that fear him:  And his justice unto children's children,

102:18. To such as keep his covenant, And are mindful of his
commandments to do them.

102:19. The lord hath prepared his throne in heaven:  and his kingdom
shall rule over all.

102:20. Bless the Lord, all ye his angels:  you that are mighty in
strength, and execute his word, hearkening to the voice of his orders.

102:21. Bless the Lord, all ye his hosts:  you ministers of his that do
his will.

102:22. Bless the Lord, all his works:  in every place of his dominion,
O my soul, bless thou the Lord.



Psalms Chapter 103


Benedic, anima.

God is to be praised for his mighty works, and wonderful providence.

103:1. For David himself.  Bless the Lord, O my soul:  O Lord my God,
thou art exceedingly great.  Thou hast put on praise and beauty:

103:2. And art clothed with light as with a garment.  Who stretchest out
the heaven like a pavilion:

103:3. Who coverest the higher rooms thereof with water.  Who makest the
clouds thy chariot:  who walkest upon the wings of the winds.

103:4. Who makest thy angels spirits:  and thy ministers a burning fire.

103:5. Who hast founded the earth upon its own bases:  it shall not be
moved for ever and ever.

103:6. The deep like a garment is its clothing:  above the mountains
shall the waters stand.

103:7. At thy rebuke they shall flee:  at the voice of thy thunder they
shall fear.

103:8. The mountains ascend, and the plains descend into the place
which thou hast founded for them.

103:9. Thou hast set a bound which they shall not pass over; neither
shall they return to cover the earth.

103:10. Thou sendest forth springs in the vales:  between the midst of
the hills the waters shall pass.

103:11. All the beasts of the field shall drink:  the wild asses shall
expect in their thirst.

103:12. Over them the birds of the air shall dwell:  from the midst of
the rocks they shall give forth their voices.

103:13. Thou waterest the hills from thy upper rooms:  the earth shall
be filled with the fruit of thy works:

103:14. Bringing forth grass for cattle, and herb for the service of
men.  That thou mayst bring bread out of the earth:

103:15. And that wine may cheer the heart of man.  That he may make the
face cheerful with oil:  and that bread may strengthen man's heart.

103:16. The trees of the field shall be filled, and the cedars of
Libanus which he hath planted:

103:17. There the sparrows shall make their nests.  The highest of them
is the house of the heron.

103:18. The high hills are a refuge for the harts, the rock for the
irchins.

103:19. He hath made the moon for seasons:  the sun knoweth his going
down.

103:20. Thou hast appointed darkness, and it is night:  in it shall all
the beasts of the woods go about:

103:21. The young lions roaring after their prey, and seeking their
meat from God.

103:22. The sun ariseth, and they are gathered together:  and they shall
lie down in their dens.

103:23. Man shall go forth to his work, and to his labour until the
evening.

103:24. How great are thy works, O Lord ?  thou hast made all things in
wisdom:  the earth is filled with thy riches.

103:25. So is this great sea, which stretcheth wide its arms:  there are
creeping things without number:  Creatures little and great.

103:26. There the ships shall go.  This sea dragon which thou hast
formed to play therein.

103:27. All expect of thee that thou give them food in season.

103:28. What thou givest to them they shall gather up:  when thou
openest thy hand, they shall all be filled with good.

103:29. But if thou turnest away thy face, they shall be troubled:  thou
shalt take away their breath, and they shall fail, and shall return to
their dust.

103:30. Thou shalt send forth thy spirit, and they shall be created:
and thou shalt renew the face of the earth.

103:31. May the glory of the Lord endure for ever:  the Lord shall
rejoice in his works.

103:32. He looketh upon the earth, and maketh it tremble:  he troubleth
the mountains, and they smoke.

103:33. I will sing to the Lord as long as I live:  I will sing praise
to my God while I have my being.

103:34. Let my speech be acceptable to him:  but I will take delight in
the Lord.

103:35. Let sinners be consumed out of the earth, and the unjust, so
that they be no more:  O my soul, bless thou the Lord.



Psalms Chapter 104


Confitemini Domino.

A thanksgiving to God for his benefits to his people Israel.

Alleluia.

104:1. Give glory to the Lord, and call upon his name:  declare his
deeds among the Gentiles.

104:2. Sing to him, yea sing praises to him:  relate all his wondrous
works.

104:3. Glory ye in his holy name:  let the heart of them rejoice that
seek the Lord.

104:4. Seek ye the lord, and be strengthened:  seek his face evermore.

104:5. Remember his marvellous works which he hath done; his wonders,
and the judgments of his mouth.

104:6. O ye seed of Abraham his servant; ye sons of Jacob his chosen.

104:7. He is the Lord our God:  his judgments are in all the earth.

104:8. He hath remembered his covenant for ever:  the word which he
commanded to a thousand generations.

104:9. Which he made to Abraham; and his oath to Isaac:

104:10. And he appointed the same to Jacob for a law, and to Israel for
an everlasting testament:

104:11. Saying:  To thee will I give the land of Chanaan, the lot of
your inheritance.

104:12. When they were but a small number:  yea very few, and sojourners
therein:

104:13. And they passed from nation to nation, and from one kingdom to
another people.

104:14. He suffered no man to hurt them:  and he reproved kings for
their sakes.

104:15. Touch ye not my anointed:  and do no evil to my prophets.

104:16. And he called a famine upon the land:  and he broke in pieces
all the support of bread.

104:17. He sent a man before them:  Joseph, who was sold for a slave.

104:18. They humbled his feet in fetters:  the iron pierced his soul,

104:19. Until his word came.  The word of the Lord inflamed him.

104:20. The king sent, and he released him:  the ruler of the people,
and he set him at liberty.

104:21. He made him master of his house, and ruler of all his
possession.

104:22. That he might instruct his princes as himself, and teach his
ancients wisdom.

104:23. And Israel went into Egypt:  and Jacob was a sojourner in the
land of Cham.

104:24. And he increased his people exceedingly:  and strengthened them
over their enemies.

104:25. He turned their heart to hate his people:  and to deal
deceitfully with his servants.

He turned their heart, etc. . .Not that God (who is never the author of
sin) moved the Egyptians to hate and persecute his people; but that the
Egyptians took occasion of hating and envying them, from the sight of
the benefits which God bestowed upon them.

104:26. He sent Moses his servant:  Aaron the man whom he had chosen.

104:27. He gave them power to shew them signs, and his wonders in the
land of Cham.

104:28. He sent darkness, and made it obscure:  and grieved not his
words.

Grieved not his words. . .That is, he was not wanting to fulfil his
words:  or he did not grieve Moses and Aaron, the carriers of his words:
or he did not grieve his words, that is, his sons, the children of
Israel, who enjoyed light whilst the Egyptians were oppressed with
darkness.

104:29. He turned their waters into blood, and destroyed their fish.

104:30. Their land brought forth frogs, in the inner chambers of their
kings.

104:31. He spoke, and there came divers sorts of flies and sciniphs in
all their coasts.

Sciniphs. . .See the annotation, Ex.8.16.

104:32. He gave them hail for rain, a burning fire in the land.

104:33. And he destroyed their vineyards and their fig trees:  and he
broke in pieces the trees of their coasts.

104:34. He spoke, and the locust came, and the bruchus, of which there
was no number.

Bruchus. . .An insect of the locust kind.

104:35. And they devoured all the grass in their land, and consumed all
the fruit of their ground.

104:36. And he slew all the firstborn in their land:  the firstfruits of
all their labour.

104:37. And he brought them out with silver and gold:  and there was not
among their tribes one that was feeble.

104:38. Egypt was glad when they departed:  for the fear of them lay
upon them.

104:39. He spread a cloud for their protection, and fire to give them
light in the night.

104:40. They asked, and the quail came:  and he filled them with the
bread of heaven.

104:41. He opened the rock, and waters flowed:  rivers ran down in the
dry land.

104:42. Because he remembered his holy word, which he had spoken to his
servant Abraham.

104:43. And he brought forth his people with joy, and his chosen with
gladness.

104:44. And he gave them the lands of the Gentiles:  and they possessed
the labours of the people:

104:45. That they might observe his justifications, and seek after his
law.

His justifications. . .That is, his commandments; which here, and in
many other places of the scripture, are called justifications, because
the keeping of them makes man just.  The Protestants render it by the
word statutes, in favour of their doctrine, which does not allow good
works to justify.



Psalms Chapter 105


Confitemini Domino.

A confession of the manifold sins and ingratitudes of the Israelites.

Alleluia.

105:1. Give glory to the Lord, for he is good:  for his mercy endureth
for ever.

105:2. Who shall declare the powers of the Lord?  who shall set forth
all his praises?

105:3. Blessed are they that keep judgment, and do justice at all
times.

105:4. Remember us, O Lord, in the favour of thy people:  visit us with
thy salvation.

105:5. That we may see the good of thy chosen, that we may rejoice in
the joy of thy nation:  that thou mayst be praised with thy inheritance.

105:6. We have sinned with our fathers:  we have acted unjustly, we have
wrought iniquity.

105:7. Our fathers understood not thy wonders in Egypt:  they remembered
not the multitude of thy mercies:  And they provoked to wrath going up
to the sea, even the Red Sea.

105:8. And he saved them for his own name's sake:  that he might make
his power known.

105:9. And he rebuked the Red Sea and it was dried up:  and he led them
through the depths, as in a wilderness.

105:10. And he saved them from the hand of them that hated them:  and he
redeemed them from the hand of the enemy.

105:11. And the water covered them that afflicted them:  there was not
one of them left.

105:12. And they believed his words:  and they sang his praises.

105:13. They had quickly done, they forgot his works:  and they waited
not for his counsel.

105:14. And they coveted their desire in the desert:  and they tempted
God in the place without water.

105:15. And he gave them their request:  and sent fulness into their
souls.

105:16. And they provoked Moses in the camp, Aaron the holy one of the
Lord.

105:17. The earth opened and swallowed up Dathan:  and covered the
congregation of Abiron.

105:18. And a fire was kindled in their congregation:  the flame burned
the wicked.

105:19. They made also a calf in Horeb:  and they adored the graven
thing.

105:20. And they changed their glory into the likeness of a calf that
eateth grass.

105:21. They forgot God, who saved them, who had done great things in
Egypt,

105:22. Wondrous works in the land of Cham:  terrible things in the Red
Sea.

105:23. And he said that he would destroy them:  had not Moses his
chosen stood before him in the breach:  To turn away his wrath, lest he
should destroy them.

105:24. And they set at nought the desirable land.  They believed not
his word,

105:25. And they murmured in their tents:  they hearkened not to the
voice of the Lord.

105:26. And he lifted up his hand over them:  to overthrow them in the
desert;

105:27. And to cast down their seed among the nations, and to scatter
them in the countries.

105:28. They also were initiated to Beelphegor:  and ate the sacrifices
of the dead.

Initiated. . .That is, they dedicated, or consecrated themselves to the
idol of the Moabites and Madianites, called Beelphegor, or Baal-Peor.
Num. 25.3.--Ibid.  The dead. . .Viz., idols without life.

105:29. And they provoked him with their inventions:  and destruction
was multiplied among them.

105:30. Then Phinees stood up, and pacified him:  and the slaughter
ceased.

105:31. And it was reputed to him unto justice, to generation and
generation for evermore.

105:32. They provoked him also at the waters of contradiction:  and
Moses was afflicted for their sakes:

105:33. Because they exasperated his spirit.  And he distinguished with
his lips.

He distinguished with his lips. . .Moses, by occasion of the people's
rebellion and incredulity, was guilty of distinguishing with his lips;
when, instead of speaking to the rock, as God had commanded, he said to
the people, with a certain hesitation in his faith, Hear ye, rebellious
and incredulous:  Can we from this rock bring out water for you?  Num.
20.10.

105:34. They did not destroy the nations of which the Lord spoke unto
them.

105:35. And they were mingled among the heathens, and learned their
works:

105:36. And served their idols, and it became a stumblingblock to them.

105:37. And they sacrificed their sons, and their daughters to devils.

105:38. And they shed innocent blood:  the blood of their sons and of
their daughters which they sacrificed to the idols of Chanaan.  And the
land was polluted with blood,

105:39. And was defiled with their works:  and they went aside after
their own inventions.

105:40. And the Lord was exceedingly angry with his people:  and he
abhorred his inheritance.

105:41. And he delivered them into the hands of the nations:  and they
that hated them had dominion over them.

105:42. And their enemies afflicted them:  and they were humbled under
their hands:

105:43. Many times did he deliver them.  But they provoked him with
their counsel:  and they were brought low by their iniquities.

105:44. And he saw when they were in tribulation:  and he heard their
prayer.

105:45. And he was mindful of his covenant:  and repented according to
the multitude of his mercies.

105:46. And he gave them unto mercies, in the sight of all those that
had made them captives.

105:47. Save us, O Lord, our God:  and gather us from among the nations:
That we may give thanks to thy holy name, and may glory in thy praise.

105:48. Blessed be the Lord the God of Israel, from everlasting to
everlasting:  and let all the people say:  So be it, so be it.



Psalms Chapter 106


Confitemini Domino.

All are invited to give thanks to God for his perpetual providence over
men.

Alleluia.

106:1. Give glory to the Lord, for he is good:  for his mercy endureth
for ever.

106:2. Let them say so that have been redeemed by the Lord, whom he
hath redeemed from the hand of the enemy:  and gathered out of the
countries.

106:3. From the rising and from the setting of the sun, from the north
and from the sea.

106:4. They wandered in a wilderness, in a place without water:  they
found not the way of a city for their habitation.

106:5. They were hungry and thirsty:  their soul fainted in them.

106:6. And they cried to the Lord in their tribulation:  and he
delivered them out of their distresses.

106:7. And he led them into the right way, that they might go to a city
of habitation.

106:8. Let the mercies of the Lord give glory to him:  and his wonderful
works to the children of men.

106:9. For he hath satisfied the empty soul, and hath filled the hungry
soul with good things.

106:10. Such as sat in darkness and in the shadow of death:  bound in
want and in iron.

106:11. Because they had exasperated the words of God:  and provoked the
counsel of the most High:

106:12. And their heart was humbled with labours:  they were weakened,
and there was none to help them.

106:13. Then they cried to the Lord in their affliction:  and he
delivered them out of their distresses.

106:14. And he brought them out of darkness, and the shadow of death;
and broke their bonds in sunder.

106:15. Let the mercies of the Lord give glory to him, and his
wonderful works to the children of men.

106:16. Because he hath broken gates of brass, and burst iron bars.

106:17. He took them out of the way of their iniquity:  for they were
brought low for their injustices.

106:18. Their soul abhorred all manner of meat:  and they drew nigh even
to the gates of death.

106:19. And they cried to the Lord in their affliction:  and he
delivered them out of their distresses.

106:20. He sent his word, and healed them:  and delivered them from
their destructions.

106:21. Let the mercies of the Lord give glory to him:  and his
wonderful works to the children of men.

106:22. And let them sacrifice the sacrifice of praise:  and declare his
works with joy.

106:23. They that go down to the sea in ships, doing business in the
great waters:

106:24. These have seen the works of the Lord, and his wonders in the
deep.

106:25. He said the word, and there arose a storm of wind:  and the
waves thereof were lifted up.

106:26. They mount up to the heavens, and they go down to the depths:
their soul pined away with evils.

106:27. They were troubled, and reeled like a drunken man; and all
their wisdom was swallowed up.

106:28. And they cried to the Lord in their affliction:  and he brought
them out of their distresses.

106:29. And he turned the storm into a breeze:  and its waves were
still.

106:30. And they rejoiced because they were still:  and he brought them
to the haven which they wished for.

106:31. Let the mercies of the Lord give glory to him, and his
wonderful works to the children of men.

106:32. And let them exalt him in the church of the people:  and praise
him in the chair of the ancients.

106:33. He hath turned rivers into a wilderness:  and the sources of
waters into dry ground:

106:34. A fruitful land into barrenness, for the wickedness of them
that dwell therein.

106:35. He hath turned a wilderness into pools of waters, and a dry
land into water springs.

106:36. And hath placed there the hungry; and they made a city for
their habitation.

106:37. Anti they sowed fields, and planted vineyards:  and they yielded
fruit of birth.

106:38. And he blessed them, and they were multiplied exceedingly:  and
their cattle he suffered not to decrease.

106:39. Then they were brought to be few:  and they were afflicted
through the trouble of evils and sorrow.

106:40. Contempt was poured forth upon their princes:  and he caused
them to wander where there was no passing, and out of the way.

106:41. And he helped the poor out of poverty:  and made him families
like a flock of sheep.

106:42. The just shall see, and shall rejoice, and all iniquity shall
stop her mouth.

106:43. Who is wise, and will keep these things; and will understand
the mercies of the Lord?



Psalms Chapter 107


Paratum cor meum.

The prophet praiseth God for benefits received.

107:1. A canticle of a psalm for David himself.

107:2. My heart is ready, O God, my heart is ready:  I will sing, and
will give praise, with my glory.

107:3. Arise, my glory; arise, psaltery and harp:  I will arise in the
morning early.

107:4. I will praise thee, O Lord, among the people:  and I will sing
unto thee among the nations.

107:5. For thy mercy is great above the heavens:  and thy truth even
unto the clouds.

107:6. Be thou exalted, O God, above the heavens, and thy glory over
all the earth:

107:7. That thy beloved may be delivered.  Save with thy right hand and
hear me.

107:8. God hath spoken in his holiness.  I will rejoice, and I will
divide Sichem and I will mete out the vale of tabernacles.

107:9. Galaad is mine:  and Manasses is mine and Ephraim the protection
of my head.  Juda is my king:

107:10. Moab the pot of my hope.  Over Edom I will stretch out my shoe:
the aliens are become my friends.

107:11. Who will bring me into the strong city?  who will lead me into
Edom?

107:12. Wilt not thou, O God, who hast cast us off ?  and wilt not thou,
O God, go forth with our armies?

107:13. O grant us help from trouble:  for vain is the help of man.

107:14. Through God we shall do mightily:  and he will bring our enemies
to nothing.



Psalms Chapter 108


Deus, laudem meam.

David in the person of Christ, prayeth against his persecutors; more
especially the traitor Judas:  foretelling and approving his just
punishment for his obstinacy in sin and final impenitence.

108:1. Unto the end, a psalm for David.

108:2. O God, be not thou silent in my praise:  for the mouth of the
wicked and the mouth of the deceitful man is opened against me.

108:3. They have spoken against me with deceitful tongues; and they
have compassed me about with words of hatred; and have fought against
me without cause.

108:4. Instead of making me a return of love, they detracted me:  but I
gave myself to prayer.

108:5. And they repaid me evil for good:  and hatred for my love.

108:6. Set thou the sinner over him:  and may the devil stand at his
right hand.

Set thou the sinner over him, etc. . .Give to the devil, that
arch-sinner, power over him:  let him enter into him, and possess him.
The imprecations, contained in the thirty verses of this psalm, are
opposed to the thirty pieces of silver for which Judas betrayed our
Lord; and are to be taken as prophetic denunciations of the evils that
should befall the traitor and his accomplices the Jews; and not
properly as curses.

108:7. When he is judged, may he go out condemned; and may his prayer
be turned to sin.

108:8. May his days be few:  and his bishopric let another take.

108:9. May his children be fatherless, and his wife a widow.

108:10. Let his children be carried about vagabonds, and beg; and let
them be cast out of their dwellings.

108:11. May the usurer search all his substance:  and let strangers
plunder his labours.

108:12. May there be none to help him:  nor none to pity his fatherless
offspring.

108:13. May his posterity be cut off; in one generation may his name be
blotted out.

108:14. May the iniquity of his fathers be remembered in the sight of
the Lord:  and let not the sin of his mother be blotted out.

108:15. May they be before the Lord continually, and let the memory of
them perish from the earth:

108:16. because he remembered not to shew mercy,

108:17. But persecuted the poor man and the beggar; and the broken in
heart, to put him to death.

108:18. And he loved cursing, and it shall come unto him:  and he would
not have blessing, and it shall be far from him.  And he put on cursing,
like a garment:  and it went in like water into his entrails, and like
oil in his bones.

108:19. May it be unto him like a garment which covereth him; and like
a girdle with which he is girded continually.

108:20. This is the work of them who detract me before the Lord; and
who speak evils against my soul.

108:21. But thou, O Lord, do with me for thy name's sake:  because thy
mercy is sweet.  Do thou deliver me,

108:22. For I am poor and needy, and my heart is troubled within me.

108:23. I am taken away like the shadow when it declineth:  and I am
shaken off as locusts.

108:24. My knees are weakened through fasting:  and my flesh is changed
for oil.

For oil. . .Propter oleum.  The meaning is, my flesh is changed, being
perfectly emaciated and dried up, as having lost all its oil or
fatness.

108:25. And I am become a reproach to them:  they saw me and they shaked
their heads.

108:26. Help me, O Lord my God; save me; according to thy mercy.

108:27. And let them know that this is thy hand:  and that thou, O Lord,
hast done it.

108:28. They will curse and thou wilt bless:  let them that rise up
against me be confounded:  but thy servant shall rejoice.

108:29. Let them that detract me be clothed with shame:  and let them be
covered with their confusion as with a double cloak.

108:30. I will give great thanks to the Lord with my mouth:  and in the
midst of many I will praise him.

108:31. Because he hath stood at the right hand of the poor, to save my
soul from persecutors.



Psalms Chapter 109


Dixit Dominus.

Christ's exaltation and everlasting priesthood.

109:1. A psalm for David.  The Lord said to my Lord:  Sit thou at my
right hand:  Until I make thy enemies thy footstool.

109:2. The Lord will send forth the sceptre of thy power out of Sion:
rule thou in the midst of thy enemies.

109:3. With thee is the principality in the day of thy strength:  in the
brightness of the saints:  from the womb before the day star I begot
thee.

109:4. The Lord hath sworn, and he will not repent:  Thou art a priest
for ever according to the order of Melchisedech.

109:5. The Lord at thy right hand hath broken kings in the day of his
wrath.

109:6. He shall judge among nations, he shall fill ruins:  he shall
crush the heads in the land of many.

109:7. He shall drink of the torrent in the way:  therefore shall he
lift up the head.



Psalms Chapter 110


Confitebor tibi, Domine.

God is to be praised for his graces, and benefits to his church.

Alleluia.

110:1. I will praise thee, O Lord, with my whole heart; in the council
of the just, and in the congregation.

110:2. Great are the works of the Lord:  sought out according to all his
wills.

110:3. His work is praise and magnificence:  and his justice continueth
for ever and ever.

110:4. He hath made a remembrance of his wonderful works, being a
merciful and gracious Lord:

110:5. He hath given food to them that fear him.  He will be mindful for
ever of his covenant:

110:6. He will shew forth to his people the power of his works.

110:7. That he may give them the inheritance of the Gentiles:  the works
of his hands are truth and judgment.

110:8. All his commandments are faithful:  confirmed for ever and ever,
made in truth and equity.

110:9. He hath sent redemption to his people:  he hath commanded his
covenant for ever.  Holy and terrible is his name:

110:10. The fear of the Lord is the beginning of wisdom.  A good
understanding to all that do it:  his praise continueth for ever and
ever.



Psalms Chapter 111


Beatus vir.

The good man is happy.

Alleluia, of the returning of Aggeus and Zacharias.

Of the returning, etc. . .This is in the Greek and Latin, but not in the
Hebrew.  It signifies that this psalm was proper to be sung at the time
of the return of the people from their captivity; to inculcate to them,
how happy they might be, if they would be constant in the service of
God.

111:1. Blessed is the man that feareth the Lord:  he shall delight
exceedingly in his commandments.

111:2. His seed shall be mighty upon earth:  the generation of the
righteous shall be blessed.

111:3. Glory and wealth shall be in his house:  and his justice
remaineth for ever and ever.

111:4. To the righteous a light is risen up in darkness:  he is
merciful, and compassionate and just.

111:5. Acceptable is the man that sheweth mercy and lendeth:  he shall
order his words with judgment:

111:6. Because he shall not be moved for ever.

111:7. The just shall be in everlasting remembrance:  he shall not fear
the evil hearing.  His heart is ready to hope in the Lord:

111:8. His heart is strengthened, he shall not be moved until he look
over his enemies.

111:9. He hath distributed, he hath given to the poor:  his justice
remaineth for ever and ever:  his horn shall be exalted in glory.

111:10. The wicked shall see, and shall be angry, he shall gnash with
his teeth and pine away:  the desire of the wicked shall perish.



Psalms Chapter 112


Laudate, pueri.

God is to be praised for his regard to the poor and humble.

Alleluia.

112:1. Praise the Lord, ye children:  praise ye the name of the Lord.

112:2. Blessed be the name of the Lord, from henceforth now and for
ever.

112:3. From the rising of the sun unto the going down of the same, the
name of the Lord is worthy of praise.

112:4. The Lord is high above all nations; and his glory above the
heavens.

112:5. Who is as the Lord our God, who dwelleth on high:

112:6. and looketh
down on the low things in heaven and in earth?

112:7. Raising up the needy from the earth, and lifting up the poor out
of the dunghill:

112:8. That he may place him with princes, with the princes of his
people.

112:9. Who maketh a barren woman to dwell in a house, the joyful mother
of children.



Psalms Chapter 113


In exitu Israel.

God hath shewn his power in delivering his people:  idols are vain.  The
Hebrews divide this into two psalms.

Alleluia.

113:1. When Israel went out of Egypt, the house of Jacob from a
barbarous people:

113:2. Judea was made his sanctuary, Israel his dominion.

113:3. The sea saw and fled:  Jordan was turned back.

113:4. The mountains skipped like rams, and the hills like the lambs of
the flock.

113:5. What ailed thee, O thou sea, that thou didst flee: and thou,
O Jordan, that thou wast turned back?

113:6. Ye mountains, that ye skipped like rams, and ye hills, like
lambs of the flock?

113:7. At the presence of the Lord the earth was moved, at the presence
of the God of Jacob:

113:8. Who turned the rock into pools of water, and the stony hill into
fountains of waters.

113:1. Not to us, O Lord, not to us; but to thy name give glory.

113:2. For thy mercy, and for thy truth's sake:  lest the Gentiles
should say:  Where is their God?

113:3. But our God is in heaven:  he hath done all things whatsoever he
would.

113:4. The idols of the Gentiles are silver and gold, the works of the
hands of men.

113:5. They have mouths and speak not:  they have eyes and see not.

113:6. They have ears and hear not:  they have noses and smell not.

113:7. They have hands and feel not:  they have feet and walk not:
neither shall they cry out through their throat.

113:8. Let them that make them become like unto them:  and all such as
trust in them.

113:9. The house of Israel hath hoped in the Lord:  he is their helper
and their protector.

113:10. The house of Aaron hath hoped in the Lord:  he is their helper
and their protector.

113:11. They that fear the Lord have hoped in the Lord:  he is their
helper and their protector.

113:12. The Lord hath been mindful of us, and hath blessed us.  He hath
blessed the house of Israel:  he hath blessed the house of Aaron.

113:13. He hath blessed all that fear the Lord, both little and great.

113:14. May the Lord add blessings upon you:  upon you, and upon your
children.

113:15. Blessed be you of the Lord, who made heaven and earth.

113:16. The heaven of heaven is the Lord's:  but the earth he has given
to the children of men.

113:17. The dead shall not praise thee, O Lord:  nor any of them that go
down to hell.

113:18. But we that live bless the Lord:  from this time now and for
ever.



Psalms Chapter 114


Dilexi.

The prayer of a just man in affliction, with a lively confidence in
God.

Alleluia.

114:1. I have loved, because the Lord will hear the voice of my prayer.

114:2. Because he hath inclined his ear unto me:  and in my days I will
call upon him.

114:3. The sorrows of death have compassed me:  and the perils of hell
have found me.  I met with trouble and sorrow:

114:4. And I called upon the name of the Lord.  O Lord, deliver my soul.

114:5. The Lord is merciful and just, and our God sheweth mercy.

114:6. The Lord is the keeper of little ones:  I was humbled, and he
delivered me.

114:7. Turn, O my soul, into thy rest:  for the Lord hath been bountiful
to thee.

114:8. For he hath delivered my soul from death:  my eyes from tears, my
feet from falling.

114:9. I will please the Lord in the land of the living.



Psalms Chapter 115


Credidi.

This in the Hebrew is joined with the foregoing psalm, and continues to
express the faith and gratitude of the psalmist.

Alleluia.

115:10. I have believed, therefore have I spoken; but I have
been humbled exceedingly.

115:11. I said in my excess:  Every man is a liar.

115:12. What shall I render to the Lord, for all the things that he
hath rendered to me?

115:13. I will take the chalice of salvation; and I will call upon the
name of the Lord.

115:14. I will pay my vows to the Lord before all his people:

115:15. Precious in the sight of the Lord is the death of his saints.

115:16. O Lord, for I am thy servant:  I am thy servant, and the son of
thy handmaid.  Thou hast broken my bonds:

115:17. I will sacrifice to thee the sacrifice of praise, and I will
call upon the name of the Lord.

115:18. I will pay my vows to the Lord in the sight of all his people:

115:19. In the courts of the house of the Lord, in the midst of thee, O
Jerusalem.



Psalms Chapter 116


Laudate Dominum.

All nations are called upon to praise God for his mercy and truth.

Alleluia.

116:1. O Praise the Lord, all ye nations:  praise him, all ye people.

116:2. For his mercy is confirmed upon us:  and the truth of the Lord
remaineth for ever.



Psalms Chapter 117


Confitemini Domino.

The psalmist praiseth God for his delivery from evils:  putteth his
whole trust in him; and foretelleth the coming of Christ.

Alleluia.

117:1. Give praise to the Lord, for he is good:  for his mercy endureth
for ever.

117:2. Let Israel now say, that he is good:  that his mercy endureth for
ever.

117:3. Let the house of Aaron now say, that his mercy endureth for
ever.

117:4. Let them that fear the Lord now say, that his mercy endureth for
ever.

117:5. In my trouble I called upon the Lord:  and the Lord heard me, and
enlarged me.

117:6. The Lord is my helper:  I will not fear what man can do unto me.

117:7. The Lord is my helper:  and I will look over my enemies.

117:8. It is good to confide in the Lord, rather than to have
confidence in man.

117:9. It is good to trust in the Lord, rather than to trust in
princes.

117:10. All nations compassed me about; and, in the name of the Lord I
have been revenged on them.

117:11. Surrounding me they compassed me about:  and in the name of the
Lord I have been revenged on them.

117:12. They surrounded me like bees, and they burned like fire among
thorns:  and in the name of the Lord I was revenged on them.

117:13. Being pushed I was overturned that I might fall:  but the Lord
supported me.

117:14. The Lord is my strength and my praise:  and he is become my
salvation.

117:15. The voice of rejoicing and of salvation is in the tabernacles
of the just.

117:16. The right hand of the Lord hath wrought strength:  the right
hand of the Lord hath exalted me:  the right hand of the Lord hath
wrought strength.

117:17. I shall not die, but live:  and shall declare the works of the
Lord.

117:18. The Lord chastising hath chastised me:  but he hath not
delivered me over to death.

117:19. Open ye to me the gates of justice:  I will go in to them, and
give praise to the Lord.

117:20. This is the gate of the Lord, the just shall enter into it.

117:21. I will give glory to thee because thou hast heard me:  and art
become my salvation.

117:22. The stone which the builders rejected; the same is become the
head of the corner.

117:23. This is the Lord's doing , and it is wonderful in our eyes.

117:24. This is the day which the Lord hath made:  let us be glad and
rejoice therein.

117:25. O Lord, save me:  O Lord, give good success.

117:26. Blessed be he that cometh in the name of the Lord.  We have
blessed you out of the house of the Lord.

117:27. The Lord is God, and he hath shone upon us.  Appoint a solemn
day, with shady boughs, even to the horn of the altar.

117:28. Thou art my God, and I will praise thee:  thou art my God, and I
will exalt thee.  I will praise thee, because thou hast heard me, and
art become my salvation.

117:29. O praise ye the Lord, for he is good:  for his mercy endureth
for ever.



Psalms Chapter 118


Beati immaculati.

Of the excellence of virtue consisting in the love and observance of
the commandments of God.

Alleluia.

ALEPH.

Aleph. . .The first eight verses of this psalm in the original begin
with Aleph, which is the name of the first letter of the Hebrew
alphabet.  The second eight verses begin with Beth, the name of the
second letter of the Hebrew alphabet; and so to the end of the whole
alphabet, in all twenty-two letters, each letter having eight verses.
This order is variously expounded by the holy fathers; which shews the
difficulty of understanding the holy scriptures, and consequently with
what humility, and submission to the Church they are to be read.

118:1. Blessed are the undefiled in the way, who walk in the law of the
Lord.

118:2. Blessed are they that search his testimonies:  that seek him with
their whole heart.

His testimonies. . .The commandments of God are called his testimonies,
because they testify his holy will unto us.  Note here, that in almost
every verse of this psalm (which in number are 176) the word and law of
God, and the love and observance of it, is perpetually inculcated,
under a variety of denominations, all signifying the same thing.

118:3. For they that work iniquity, have not walked in his ways.

118:4. Thou hast commanded thy commandments to be kept most diligently.

118:5. O! that my ways may be directed to keep thy justifications.

118:6. Then shall I not be confounded, when I shall look into all thy
commandments.

118:7. I will praise thee with uprightness of heart, when I shall have
learned the judgments of thy justice.

118:8. I will keep thy justifications:  O! do not thou utterly forsake
me.

BETH.

118:9. By what doth a young man correct his way?  by observing thy
words.

118:10. With my whole heart have I sought after thee:  let me not stray
from thy commandments.

118:11. Thy words have I hidden in my heart, that I may not sin against
thee.

118:12. Blessed art thou, O Lord:  teach me thy justifications.

118:13. With my lips I have pronounced all the judgments of thy mouth.

118:14. I have been delighted in the way of thy testimonies, as in all
riches.

118:15. I will meditate on thy commandments:  and I will consider thy
ways.

118:16. I will think of thy justifications:  I will not forget thy
words.

GIMEL.

118:17. Give bountifully to thy servant, enliven me:  and I shall keep
thy words.

118:18. Open thou my eyes:  and I will consider the wondrous things of
thy law.

118:19. I am a sojourner on the earth:  hide not thy commandments from
me.

118:20. My soul hath coveted to long for thy justifications, at all
times.

118:21. Thou hast rebuked the proud:  they are cursed who decline from
thy commandments.

118:22. Remove from me reproach and contempt:  because I have sought
after thy testimonies.

118:23. For princes sat, and spoke against me:  but thy servant was
employed in thy justifications.

118:24. For thy testimonies are my meditation:  and thy justifications
my counsel.

DALETH.

118:25. My soul hath cleaved to the pavement:  quicken thou me according
to thy word.

118:26. I have declared my ways, and thou hast heard me:  teach me thy
justifications.

118:27. Make me to understand the way of thy justifications:  and I
shall be exercised in thy wondrous works.

118:28. My soul hath slumbered through heaviness:  strengthen thou me in
thy words.

118:29. Remove from me the way of iniquity:  and out of thy law have
mercy on me.

118:30. I have chosen the way of truth:  thy judgments I have not
forgotten.

118:31. I have stuck to thy testimonies, O Lord:  put me not to shame.

118:32. I have run the way of thy commandments, when thou didst enlarge
my heart.

HE.

118:33. Set before me for a law the way of thy justifications, O Lord:
and I will always seek after it.

118:34. Give me understanding, and I will search thy law; and I will
keep it with my whole heart.

118:35. Lead me into the path of thy commandments; for this same I have
desired.

118:36. Incline my heart into thy testimonies and not to covetousness.

118:37. Turn away my eyes that they may not behold vanity:  quicken me
in thy way.

118:38. Establish thy word to thy servant, in thy fear.

118:39. Turn away my reproach, which I have apprehended:  for thy
judgments are delightful.

118:40. Behold I have longed after thy precepts:  quicken me in thy
justice.

VAU.

118:41. Let thy mercy also come upon me, O Lord:  thy salvation
according to thy word.

118:42. So shall I answer them that reproach me in any thing; that I
have trusted in thy words.

118:43. And take not thou the word of truth utterly out of my mouth:
for in thy words, I have hoped exceedingly.

118:44. So shall I always keep thy law, for ever and ever.

118:45. And I walked at large:  because I have sought after thy
commandments.

118:46. And I spoke of thy testimonies before kings:  and I was not
ashamed.

118:47. I meditated also on thy commandments, which I loved.

118:48. And I lifted up my hands to thy commandments, which I loved:
and I was exercised in thy justifications.

ZAIN.

118:49. Be thou mindful of thy word to thy servant, in which thou hast
given me hope.

118:50. This hath comforted me in my humiliation:  because thy word hath
enlivened me.

118:51. The proud did iniquitously altogether:  but I declined not from
thy law.

118:52. I remembered, O Lord, thy judgments of old:  and I was
comforted.

118:53. A fainting hath taken hold of me, because of the wicked that
forsake thy law.

118:54. Thy justifications were the subject of my song, in the place of
my pilgrimage.

118:55. In the night I have remembered thy name, O Lord:  and have kept
thy law.

118:56. This happened to me:  because I sought after thy justifications.

HETH.

118:57. O Lord, my portion, I have said, I would keep thy law.

118:58. I entreated thy face with all my heart:  have mercy on me
according to thy word.

118:59. I have thought on my ways:  and turned my feet unto thy
testimonies.

118:60. I am ready, and am not troubled:  that I may keep thy
commandments.

118:61. The cords of the wicked have encompassed me:  but I have not
forgotten thy law.

118:62. I rose at midnight to give praise to thee; for the judgments of
thy justification.

118:63. I am a partaker with all them that fear thee, and that keep thy
commandments.

118:64. The earth, O Lord, is full of thy mercy:  teach me thy
justifications.

TETH.

118:65. Thou hast done well with thy servant, O Lord, according to thy
word.

118:66. Teach me goodness and discipline and knowledge; for I have
believed thy commandments.

118:67. Before I was humbled I offended; therefore have I kept thy
word.

118:68. Thou art good; and in thy goodness teach me thy justifications.

118:69. The iniquity of the proud hath been multiplied over me:  but I
will seek thy commandments with my whole heart.

118:70. Their heart is curdled like milk:  but I have meditated on thy
law.

118:71. It is good for me that thou hast humbled me, that I may learn
thy justifications.

118:72. The law of thy mouth is good to me, above thousands of gold and
silver.

JOD.

118:73. Thy hands have made me and formed me:  give me understanding,
and I will learn thy commandments.

118:74. They that fear thee shall see me, and shall be glad :  because I
have greatly hoped in thy words.

118:75. I know, O Lord, that thy judgments are equity:  and in thy truth
thou hast humbled me.

118:76. O! let thy mercy be for my comfort, according to thy word unto
thy servant.

118:77. Let thy tender mercies come unto me, and I shall live:  for thy
law is my meditation.

118:78. Let the proud be ashamed, because they have done unjustly
towards me:  but I will be employed in thy commandments.

118:79. Let them that fear thee turn to me:  and they that know thy
testimonies.

118:80. Let my heart be undefiled in thy justifications, that I may not
be confounded.

CAPH.

118:81. My soul hath fainted after thy salvation:  and in thy word I
have very much hoped.

118:82. My eyes have failed for thy word, saying:  When wilt thou
comfort me?

118:83. For I am become like a bottle in the frost:  I have not
forgotten thy justifications.

118:84. How many are the days of thy servant:  when wilt thou execute
judgment on them that persecute me?

118:85. The wicked have told me fables:  but not as thy law.

118:86. All thy statutes are truth:  they have persecuted me unjustly,
do thou help me.

118:87. They had almost made an end of me upon earth:  but I have not
forsaken thy commandments.

118:88. Quicken thou me according to thy mercy:  and I shall keep the
testimonies of thy mouth.

LAMED.

118:89. For ever, O Lord, thy word standeth firm in heaven.

118:90. Thy truth unto all generations:  thou hast founded the earth,
and it continueth.

118:91. By thy ordinance the day goeth on:  for all things serve thee.

118:92. Unless thy law had been my meditation, I had then perhaps
perished in my abjection.

118:93. Thy justifications I will never forget:  for by them thou hast
given me life.

118:94. I am thine, save thou me:  for I have sought thy justifications.

118:95. The wicked have waited for me to destroy me:  but I have
understood thy testimonies.

118:96. I have seen an end of all perfection:  thy commandment is
exceeding broad.

MEM.

118:97. O how have I loved thy law, O Lord! it is my meditation all the
day.

118:98. Through thy commandment, thou hast made me wiser than my
enemies:  for it is ever with me.

118:99. I have understood more than all my teachers:  because thy
testimonies are my meditation.

118:100. I have had understanding above ancients:  because I have sought
thy commandments.

118:101. I have restrained my feet from every evil way:  that I may keep
thy words.

118:102. I have not declined from thy judgments, because thou hast set
me a law.

118:103. How sweet are thy words to my palate! more than honey to my
mouth.

118:104. By thy commandments I have had understanding:  therefore have I
hated every way of iniquity.

NUN.

118:105. Thy word is a lamp to my feet, and a light to my paths.

118:106. I have sworn and am determined to keep the judgments of thy
justice.

118:107. I have been humbled, O Lord, exceedingly:  quicken thou me
according to thy word.

118:108. The free offerings of my mouth make acceptable, O Lord:  and
teach me thy judgments.

118:109. My soul is continually in my hands:  and I have not forgotten
thy law.

118:110. Sinners have laid a snare for me:  but I have not erred from
thy precepts.

118:111. I have purchased thy testimonies for an inheritance for ever:
because they are the joy of my heart.

118:112. I have inclined my heart to do thy justifications for ever,
for the reward.

SAMECH.

118:113. I have hated the unjust:  and have loved thy law.

118:114. Thou art my helper and my protector:  and in thy word I have
greatly hoped.

118:115. Depart from me, ye malignant:  and I will search the
commandments of my God.

118:116. Uphold me according to thy word, and I shall live:  and let me
not be confounded in my expectation.

118:117. Help me, and I shall be saved:  and I will meditate always on
thy justifications.

118:118. Thou hast despised all them that fall off from thy judgments;
for their thought is unjust.

118:119. I have accounted all the sinners of the earth prevaricators:
therefore have I loved thy testimonies.

118:120. Pierce thou my flesh with thy fear:  for I am afraid of thy
judgments.

AIN.

118:121. I have done judgment and justice:  give me not up to them that
slander me.

118:122. Uphold thy servant unto good:  let not the proud calumniate me.

118:123. My eyes have fainted after thy salvation:  and for the word of
thy justice.

118:124. Deal with thy servant according to thy mercy:  and teach me thy
justifications.

118:125. I am thy servant:  give me understanding that I may know thy
testimonies.

118:126. It is time, O Lord, to do:  they have dissipated thy law.

118:127. Therefore have I loved thy commandments above gold and the
topaz.

118:128. Therefore was I directed to all thy commandments:  I have hated
all wicked ways.

PHE.

118:129. Thy testimonies are wonderful:  therefore my soul hath sought
them.

118:130. The declaration of thy words giveth light:  and giveth
understanding to little ones.

118:131. I opened my mouth, and panted:  because I longed for thy
commandments.

118:132. Look thou upon me, and have mercy on me according to the
judgment of them that love thy name.

118:133. Direct my steps according to thy word:  and let no iniquity
have dominion over me.

118:134. Redeem me from the calumnies of men:  that I may keep thy
commandments.

118:135. Make thy face to shine upon thy servant:  and teach me thy
justifications.

118:136. My eyes have sent forth springs of water:  because they have
not kept thy law.

SADE.

118:137. Thou art just, O Lord:  and thy judgment is right.

118:138. Thou hast commanded justice thy testimonies:  and thy truth
exceedingly.

118:139. My zeal hath made me pine away:  because my enemies forgot thy
words.

118:140. Thy word is exceedingly refined:  and thy servant hath loved
it.

118:141. I am very young and despised; but I forget not thy
justifications.

118:142. Thy justice is justice for ever:  and thy law is the truth.

118:143. Trouble and anguish have found me:  thy commandments are my
meditation.

118:144. Thy testimonies are justice for ever:  give me understanding,
and I shall live.

COPH.

118:145. I cried with my whole heart, hear me, O Lord:  I will seek thy
justifications.

118:146. I cried unto thee, save me:  that I may keep thy commandments.

118:147. I prevented the dawning of the day, and cried:  because in thy
words I very much hoped.

118:148. My eyes to thee have prevented the morning:  that I might
meditate on thy words.

118:149. Hear thou my voice, O Lord, according to thy mercy:  and
quicken me according to thy judgment.

118:150. They that persecute me have drawn nigh to iniquity; but they
are gone far off from thy law.

118:151. Thou art near, O Lord:  and all thy ways are truth.

118:152. I have known from the beginning concerning thy testimonies:
that thou hast founded them for ever.

RES.

118:153. See my humiliation and deliver me for I have not forgotten thy
law.

118:154. Judge my judgment and redeem me:  quicken thou me for thy
word's sake.

118:155. Salvation is far from sinners; because they have not sought
thy justifications.

118:156. Many, O Lord, are thy mercies:  quicken me according to thy
judgment.

118:157. Many are they that persecute me and afflict me; but I have not
declined from thy testimonies.

118:158. I beheld the transgressors, and pined away; because they kept
not thy word.

118:159. Behold I have loved thy commandments, O Lord; quicken me thou
in thy mercy.

118:160. The beginning of thy words is truth:  all the judgments of thy
justice are for ever.

SIN.

118:161. Princes have persecuted me without cause:  and my heart hath
been in awe of thy words.

118:162. I will rejoice at thy words, as one that hath found great
spoil.

118:163. I have hated and abhorred iniquity; but I have loved thy law.

118:164. Seven times a day I have given praise to thee, for the
judgments of thy justice.

118:165. Much peace have they that love thy law, and to them there is
no stumbling.  block.

118:166. I looked for thy salvation, O Lord:  and I loved thy
commandments.

118:167. My soul hath kept thy testimonies and hath loved them
exceedingly.

118:168. I have kept thy commandments and thy testimonies:  because all
my ways are in thy sight.

TAU.

118:169. Let my supplication, O Lord, come near in thy sight:  give me
understanding according to thy word.

118:170. Let my request come in before thee; deliver thou me according
to thy word.

118:171. My lips shall utter a hymn, when thou shalt teach me thy
justifications.

118:172. My tongue shall pronounce thy word:  because all thy
commandments are justice.

118:173. Let thy hand be with me to save me; for I have chosen thy
precepts.

118:174. I have longed for thy salvation, O Lord; and thy law is my
meditation.

118:175. My soul shall live and shall praise thee:  and thy judgments
shall help me.

118:176. I have gone astray like a sheep that is lost:  seek thy
servant, because I have not forgotten thy commandments.



Psalms Chapter 119


Ad Dominum.

A prayer in tribulation.

A gradual canticle.

A gradual canticle. . .The following psalms, in number fifteen, are
called gradual psalms, or canticles, from the word gradus, signifying
steps, ascensions, or degrees:  either because they were appointed to be
sung on the fifteen steps, by which the people ascended to the temple:
or, that in the singing of them the voice was to be raised by certain
steps or ascensions:  or, that they were to be sung by the people
returning from their captivity and ascending to Jerusalem, which was
seated amongst mountains.  The holy fathers, in a mystical sense,
understand these steps, or ascensions, of the degrees by which
Christians spiritually ascend to virtue and perfection; and to the true
temple of God in the heavenly Jerusalem.

119:1. In my trouble I cried to the Lord:  and he heard me.

119:2. O Lord, deliver my soul from wicked lips, and a deceitful
tongue.

119:3. What shall be given to thee, or what shall be added to thee, to
a deceitful tongue?

119:4. The sharp arrows of the mighty, with coals that lay waste.

119:5. Woe is me, that my sojourning is prolonged!  I have dwelt with
the inhabitants of Cedar:

119:6. My soul hath been long a sojourner.

119:7. With them that hated peace I was peaceable:  when I spoke to them
they fought against me without cause.



Psalms Chapter 120


Levavi oculos.

God is the keeper of his servants.

A gradual canticle.

120:1. I have lifted up my eyes to the mountains, from whence help
shall come to me.

120:2. My help is from the Lord, who made heaven and earth.

120:3. May he not suffer thy foot to be moved:  neither let him slumber
that keepeth thee.

120:4. Behold he shall neither slumber nor sleep, that keepeth Israel.

120:5. The Lord is thy keeper, the Lord is thy protection upon thy
right hand.

120:6. The sun shall not burn thee by day:  nor the moon by night.

120:7. The Lord keepeth thee from all evil:  may the Lord keep thy soul.

120:8. May the Lord keep thy coming in and thy going out; from
henceforth now and for ever.



Psalms Chapter 121


Laetatus sum in his.

The desire and hope of the just for the coming of the kingdom of God,
and the peace of his church.

121:1. A gradual canticle.

I rejoiced at the things that were said to me:  We shall go into the
house of the Lord.

121:2. Our feet were standing in thy courts, O Jerusalem.

121:3. Jerusalem, which is built as a city, which is compact together.

121:4. For thither did the tribes go up, the tribes of the Lord:  the
testimony of Israel, to praise the name of the Lord.

121:5. Because their seats have sat in judgment, seats upon the house
of David.

121:6. Pray ye for the things that are for the peace of Jerusalem:  and
abundance for them that love thee.

121:7. Let peace be in thy strength:  and abundance in thy towers.

121:8. For the sake of my brethren, and of my neighbours, I spoke peace
of thee.

121:9. Because of the house of the Lord our God, I have sought good
things for thee.



Psalms Chapter 122


Ad te levavi.

A prayer in affliction, with confidence in God.

A gradual canticle.

122:1. To thee have I lifted up my eyes, who dwellest in heaven.

122:2. Behold as the eyes of servants are on the hands of their
masters, As the eyes of the handmaid are on the hands of her mistress:
so are our eyes unto the Lord our God, until he have mercy on us.

122:3. Have mercy on us, O Lord, have mercy on us:  for we are greatly
filled with contempt.

122:4. For our soul is greatly filled:  we are a reproach to the rich,
and contempt to the proud.



Psalms Chapter 123


Nisi quia Domini.

The church giveth glory to God for her deliverance, from the hands of
her enemies.

123:1. A gradual canticle.  If it had not been that the Lord was with
us, let Israel now say:

123:2. If it had not been that the Lord was with us, When men rose up
against us,

123:3. Perhaps they had swallowed us up alive.  When their fury was
enkindled against us,

123:4. Perhaps the waters had swallowed us up.

123:5. Our soul hath passed through a torrent:  perhaps our soul had
passed through a water insupportable.

123:6. Blessed be the Lord, who hath not given us to be a prey to their
teeth.

123:7. Our soul hath been delivered as a sparrow out of the snare of
the fowlers.  The snare is broken, and we are delivered.

123:8. Our help is in the name of the Lord, who made heaven and earth.



Psalms Chapter 124


Qui confidunt.

The just are always under God's protection.

124:1. A gradual canticle.  They that trust in the Lord shall be as
mount Sion:  he shall not be moved for ever that dwelleth

124:2. In Jerusalem.  Mountains are round about it:  so the Lord is round
about his people from henceforth now and for ever.

124:3. For the Lord will not leave the rod of sinners upon the lot of
the just:  that the just may not stretch forth their hands to iniquity.

124:4. Do good, O Lord, to those that are good, and to the upright of
heart.

124:5. But such as turn aside into bonds, the Lord shall lead out with
the workers of iniquity:  peace upon Israel.



Psalms Chapter 125


In convertendo.

The people of God rejoice at their delivery from captivity.

125:1. A gradual canticle.  When the Lord brought back the captivity of
Sion, we became like men comforted.

125:2. Then was our mouth filled with gladness; and our tongue with
joy.  Then shall they say among the Gentiles:  The Lord hath done great
things for them.

125:3. The Lord hath done great things for us:  we are become joyful.

125:4. Turn again our captivity, O Lord, as a stream in the south.

125:5. They that sow in tears shall reap in joy.

125:6. Going they went and wept, casting their seeds.

125:7. But coming they shall come with joyfulness, carrying their
sheaves.



Psalms Chapter 126


Nisi Dominus.

Nothing can be done without God's grace and blessing.

126:1. A gradual canticle of Solomon.  Unless the Lord build the house,
they labour in vain that build it.  Unless the Lord keep the city, he
watcheth in vain that keepeth it.

126:2. It is vain for you to rise before light, rise ye after you have
sitten, you that eat the bread of sorrow.  When he shall give sleep to
his beloved,

It is vain for you to rise before light. . .That is, your early rising,
your labour and worldly solicitude, will be vain, that is, will avail
you nothing, without the light, grace, and blessing of God.

126:3. Behold the inheritance of the Lord are children:  the reward, the
fruit of the womb.

126:4. As arrows in the hand of the mighty, so the children of them
that have been shaken.

126:5. Blessed is the man that hath filled the desire with them; he
shall not be confounded when he shall speak to his enemies in the gate.



Psalms Chapter 127


Beati omnes.

The fear of God is the way to happiness.

127:1. A gradual canticle.  Blessed are all they that fear the Lord:
that walk in his ways.

127:2. For thou shalt eat the labours of thy hands:  blessed art thou,
and it shall be well with thee.

127:3. Thy wife as a fruitful vine, on the sides of thy house.  Thy
children as olive plants, round about thy table.

127:4. Behold, thus shall the man be blessed that feareth the Lord.

127:5. May the Lord bless thee out of Sion:  and mayst thou see the good
things of Jerusalem all the days of thy life.

127:6. And mayst thou see thy children's children, peace upon Israel.



Psalms Chapter 128


Saepe expugnaverunt.

The church of God is invincible :  her persecutors come to nothing.

128:1. A gradual canticle.  Often have they fought against me from my
youth, let Israel now say.

128:2. Often have they fought against me from my youth:  but they could
not prevail over me.

128:3. The wicked have wrought upon my back:  they have lengthened their
iniquity.

128:4. The Lord who is just will cut the necks of sinners:

128:5. Let them all be confounded and turned back that hate Sion.

128:6. Let them be as grass upon the tops of houses:  which withereth
before it be plucked up:

128:7. Who with the mower filleth not his hand:  nor he that gathereth
sheaves his bosom.

128:8. And they that passed by have not said:  The blessing of the Lord
be upon you:  we have blessed you in the name of the Lord.



Psalms Chapter 129


De profundis.

A prayer of a sinner, trusting in the mercies of God.  The sixth
penitential psalm.

129:1. A gradual canticle.  Out of the depths I have cried to thee, O
Lord:

129:2. Lord, hear my voice.  Let thy ears be attentive to the voice of
my supplication.

129:3. If thou, O Lord, wilt mark iniquities:  Lord, who shall stand it.

129:4. For with thee there is merciful forgiveness:  and by reason of
thy law, I have waited for thee, O Lord.  My soul hath relied on his
word:

129:5. my soul hath hoped in the Lord.

129:6. From the morning watch even until night, let Israel hope in the
Lord.

129:7. Because with the Lord there is mercy:  and with him plentiful
redemption.

129:8. And he shall redeem Israel from all his iniquities.



Psalms Chapter 130


Domine, none est.

The prophet's humility.

130:1. A gradual canticle of David.  Lord, my heart is not exalted:  nor
are my eyes lofty.  Neither have I walked in great matters, nor in
wonderful things above me.

130:2. If I was not humbly minded, but exalted my soul:  As a child that
is weaned is towards his mother, so reward in my soul.

130:3. Let Israel hope in the Lord, from henceforth now and for ever.



Psalms Chapter 131


Memento, Domine.

A prayer for the fulfilling of the promise made to David.

131:1. A gradual canticle.  O Lord, remember David, and all his
meekness.

131:2. How he swore to the Lord, he vowed a vow to the God of Jacob:

131:3. If I shall enter into the tabernacle of my house:  if I shall go
up into the bed wherein I lie:

131:4. If I shall give sleep to my eyes, or slumber to my eyelids,

131:5. Or rest to my temples:  until I find out a place for the Lord, a
tabernacle for the God of Jacob.

131:6. Behold we have heard of it in Ephrata:  we have found it in the
fields of the wood.

We have heard of it in Ephrata. . .When I was young, and lived in
Bethlehem, otherwise called Ephrata, I heard of God's tabernacle and
ark, and had a devout desire of seeking it; and accordingly I found it
at Cariathiarim, the city of the woods:  where it was till it was
removed to Jerusalem.  See 1 Par. 13.

131:7. We will go into his tabernacle:  we will adore in the place where
his feet stood.

131:8. Arise, O Lord, into thy resting place:  thou and the ark, which
thou hast sanctified.

131:9. Let thy priests be clothed with justice:  and let thy saints
rejoice.

131:10. For thy servant David's sake, turn not away the face of thy
anointed.

131:11. The Lord hath sworn truth to David, and he will not make it
void:  of the fruit of thy womb I will set upon thy throne.

131:12. If thy children will keep my covenant, and these my testimonies
which I shall teach them:  Their children also for evermore shall sit
upon thy throne.

131:13. For the Lord hath chosen Sion:  he hath chosen it for his
dwelling.

131:14. This is my rest for ever and ever:  here will I dwell, for I
have chosen it.

131:15. Blessing I will bless her widow:  I will satisfy her poor with
bread.

131:16. I will clothe her priests with salvation, and her saints shall
rejoice with exceeding great joy.

131:17. There will I bring forth a horn to David:  I have prepared a
lamp for my anointed.

131:18. His enemies I will clothe with confusion:  but upon him shall my
sanctification flourish.



Psalms Chapter 132


Ecce quam bonum.

The happiness of brotherly love and concord.

132:1. A gradual canticle of David.  Behold how good and how pleasant it
is for brethren to dwell together in unity:

132:2. Like the precious ointment on the head, that ran down upon the
beard, the beard of Aaron, Which ran down to the skirt of his garment:

132:3. As the dew of Hermon, which descendeth upon mount Sion.  For
there the Lord hath commanded blessing, and life for evermore.



Psalms Chapter 133


Ecce nunc benedicite.

An exhortation to praise God continually.

133:1. A gradual canticle.  Behold now bless ye the Lord, all ye
servants of the Lord:  Who stand in the house of the Lord, in the courts
of the house of our God.

133:2. In the nights lift up your hands to the holy places, and bless
ye the Lord.

133:3. May the Lord out of Sion bless thee, he that made heaven and
earth.



Psalms Chapter 134


Laudate nomen.

An exhortation to praise God:  the vanity of idols.

134:1. Alleluia.  Praise ye the name of the Lord:  O you his servants,
praise the Lord:

134:2. You that stand in the house of the Lord, in the courts of the
house of our God.

134:3. Praise ye the Lord, for the Lord is good:  sing ye to his name,
for it is sweet.

134:4. For the Lord hath chosen Jacob unto himself:  Israel for his own
possession.

134:5. For I have known that the Lord is great, and our God is above
all gods.

134:6. Whatsoever the Lord pleased he hath done, in heaven, in earth,
in the sea, and in all the deeps.

134:7. He bringeth up clouds from the end of the earth:  he hath made
lightnings for the rain.  He bringeth forth winds out of his stores:

134:8. He slew the firstborn of Egypt from man even unto beast.

134:9. He sent forth signs and wonders in the midst of thee, O Egypt:
upon Pharao, and upon all his servants.

134:10. He smote many nations, and slew mighty kings:

134:11. Sehon king of the Amorrhites, and Og king of Basan, and all the
kingdoms of Chanaan.

134:12. And gave their land for an inheritance, for an inheritance to
his people Israel.

134:13. Thy name, O Lord, is for ever:  thy memorial, O Lord, unto all
generations.

134:14. For the Lord will judge his people, and will be entreated in
favour of his servants.

134:15. The idols of the Gentiles are silver and gold, the works of
men's hands.

134:16. They have a mouth, but they speak not:  they have eyes, but they
see not.

134:17. They have ears, but they hear not:  neither is there any breath
in their mouths.

134:18. Let them that make them be like to them:  and every one that
trusteth in them.

134:19. Bless the Lord, O house of Israel:  bless the Lord, O house of
Aaron.

134:20. Bless the Lord, O house of Levi:  you that fear the Lord, bless
the Lord.

134:21. Blessed be the Lord out of Sion, who dwelleth in Jerusalem.



Psalms Chapter 135


Confitemini Domino.

God is to be praised for his wonderful works.

135:1. Alleluia.  Praise the Lord, for he is good:  for his mercy
endureth for ever.

Praise the Lord. . .By this invitation to praise the Lord, thrice
repeated, we profess the Blessed Trinity, One God in three distinct
Persons, the Father, and the Son, and the Holy Ghost.

135:2. Praise ye the God of gods:  for his mercy endureth for ever.

135:3. Praise ye the Lord of lords:  for his mercy endureth for ever.

135:4. Who alone doth great wonders:  for his mercy endureth for ever.

135:5. Who made the heavens in understanding:  for his mercy endureth
for ever.

135:6. Who established the earth above the waters:  for his mercy
endureth for ever.

135:7. Who made the great lights:  for his mercy endureth for ever.

135:8. The sun to rule the day:  for his mercy endureth for ever.

135:9. The moon and the stars to rule the night:  for his mercy endureth
for ever.

135:10. Who smote Egypt with their firstborn:  for his mercy endureth
for ever.

135:11. Who brought out Israel from among them:  for his mercy endureth
for ever.

135:12. With a mighty hand and with a stretched out arm:  for his mercy
endureth for ever.

135:13. Who divided the Red Sea into parts:  for his mercy endureth for
ever.

135:14. And brought out Israel through the midst thereof:  for his mercy
endureth for ever.

135:15. And overthrew Pharao and his host in the Red Sea:  for his mercy
endureth for ever.

135:16. Who led his people through the desert:  for his mercy endureth
for ever.

135:17. Who smote great kings:  for his mercy endureth for ever.

135:18. And slew strong kings:  for his mercy endureth for ever.

135:19. Sehon king of the Amorrhites:  for his mercy endureth for ever.

135:20. And Og king of Basan:  for his mercy endureth for ever.

135:21. And he gave their land for an inheritance:  for his mercy
endureth for ever.

135:22. For an inheritance to his servant Israel:  for his mercy
endureth for ever.

135:23. For he was mindful of us in our affliction:  for his mercy
endureth for ever.

135:24. And he redeemed us from our enemies:  for his mercy endureth for
ever.

135:25. Who giveth food to all flesh:  for his mercy endureth for ever.

135:26. Give glory to the God of heaven:  for his mercy endureth for
ever.

135:27. Give glory to the Lord of lords:  for his mercy endureth for
ever.



Psalms Chapter 136


Super flumina.

The lamentation of the people of God in their captivity in Babylon.

A psalm of David, for Jeremias.

For Jeremias. . .For the time of Jeremias, and the captivity of Babylon.

136:1. Upon the rivers of Babylon, there we sat and wept:  when we
remembered Sion:

136:2. On the willows in the midst thereof we hung up our instruments.

136:3. For there they that led us into captivity required of us the
words of songs.  And they that carried us away, said:  Sing ye to us a
hymn of the songs of Sion.

136:4. How shall we sing the song of the Lord in a strange land?

136:5. If I forget thee, O Jerusalem, let my right hand be forgotten.

136:6. Let my tongue cleave to my jaws, if I do not remember thee:  If I
make not Jerusalem the beginning of my joy.

136:7. Remember, O Lord, the children of Edom, in the day of Jerusalem:
Who say:  Rase it, rase it, even to the foundation thereof.

136:8. O daughter of Babylon, miserable:  blessed shall he be who shall
repay thee thy payment which thou hast paid us.

136:9. Blessed be he that shall take and dash thy little ones against
the rock.

Dash thy little ones, etc. . .In the spiritual sense, we dash the little
ones of Babylon against the rock, when we mortify our passions, and
stifle the first motions of them, by a speedy recourse to the rock
which is Christ.



Psalms Chapter 137


Confitebor tibi.

Thanksgiving to God for his benefits.

137:1. For David himself.  I will praise thee, O Lord, with my whole
heart:  for thou hast heard the words of my mouth.  I will sing praise to
thee in the sight of the angels:

137:2. I will worship towards thy holy temple, and I will give glory to
thy name.  For thy mercy, and for thy truth:  for thou hast magnified thy
holy name above all.

137:3. In what day soever I shall call upon thee, hear me:  thou shalt
multiply strength in my soul.

137:4. May all the kings of the earth give glory to thee:  for they have
heard all the words of thy mouth.

137:5. And let them sing in the ways of the Lord:  for great is the
glory of the Lord.

137:6. For the Lord is high, and looketh on the low:  and the high he
knoweth afar off.

137:7. If I shall walk in the midst of tribulation, thou wilt quicken
me:  and thou hast stretched forth thy hand against the wrath of my
enemies:  and thy right hand hath saved me.

137:8. The Lord will repay for me:  thy mercy, O Lord, endureth for
ever:  O despise not the works of thy hands.



Psalms Chapter 138


Domine, probasti.

God's special providence over his servants.

138:1. Unto the end, a psalm of David.  Lord, thou hast proved me, and
known me:

138:2. Thou hast known my sitting down, and my rising up.

138:3. Thou hast understood my thoughts afar off:  my path and my line
thou hast searched out.

138:4. And thou hast foreseen all my ways:  for there is no speech in my
tongue.

There is no speech, etc. . .Viz., unknown to thee:  or when there is no
speech in my tongue; yet my whole interior and my most secret thoughts
are known to thee.

138:5. Behold, O Lord, thou hast known all things, the last and those
of old:  thou hast formed me, and hast laid thy hand upon me.

138:6. Thy knowledge is become wonderful to me:  it is high, and I
cannot reach to it.

138:7. Whither shall I go from thy spirit?  or whither shall I flee from
thy face?

138:8. If I ascend into heaven, thou art there:  if I descend into hell,
thou art present.

138:9. If I take my wings early in the morning, and dwell in the
uttermost parts of the sea:

138:10. Even there also shall thy hand lead me:  and thy right hand
shall hold me.

138:11. And I said:  Perhaps darkness shall cover me:  and night shall be
my light in my pleasures.

138:12. But darkness shall not be dark to thee, and night shall be
light all the day:  the darkness thereof, and the light thereof are
alike to thee.

138:13. For thou hast possessed my reins:  thou hast protected me from
my mother's womb.

138:14. I will praise thee, for thou art fearfully magnified:  wonderful
are thy works, and my soul knoweth right well.

138:15. My bone is not hidden from thee, which thou hast made in
secret:  and my substance in the lower parts of the earth.

138:16. Thy eyes did see my imperfect being, and in thy book all shall
be written:  days shall be formed, and no one in them.

138:17. But to me thy friends, O God, are made exceedingly honourable:
their principality is exceedingly strengthened.

138:18. I will number them, and they shall be multiplied above the
sand, I rose up and am still with thee.

138:19. If thou wilt kill the wicked, O God:  ye men of blood, depart
from me:

138:20. Because you say in thought:  They shall receive thy cities in
vain.

Because you say in thought, etc. . .Depart from me, you wicked, who plot
against the servants of God, and think to cast them out of the cities
of their habitation; as if they have received them in vain, and to no
purpose.

138:21. Have I not hated them, O Lord, that hated thee:  and pined away
because of thy enemies?

138:22. I have hated them with a perfect hatred:  and they are become
enemies to me.

I have hated them. . .Not with an hatred of malice, but a zeal for the
observance of God's commandments; which he saw were despised by the
wicked, who are to be considered enemies to God.

138:23. Prove me, O God, and know my heart:  examine me, and know my
paths.

138:24. And see if there be in me the way of iniquity:  and lead me in
the eternal way.



Psalms Chapter 139


Eripe me, Domine.

A prayer to be delivered from the wicked.

139:1. Unto the end, a psalm of David.

139:2. Deliver me, O Lord, from the evil man:  rescue me from the unjust
man.

139:3. Who have devised iniquities in their hearts:  all the day long
they designed battles.

139:4. They have sharpened their tongues like a serpent:  the venom of
asps is under their lips.

139:5. Keep me, O Lord, from the hand of the wicked:  and from unjust
men deliver me.  Who have proposed to supplant my steps:

139:6. The proud have hidden a net for me.  And they have stretched out
cords for a snare:  they have laid for me a stumblingblock by the
wayside.

139:7. I said to the Lord:  Thou art my God:  hear, O Lord, the voice of
my supplication.

139:8. O Lord, Lord, the strength of my salvation:  thou hast
overshadowed my head in the day of battle.

139:9. Give me not up, O Lord, from my desire to the wicked:  they have
plotted against me; do not thou forsake me, lest they should triumph.

139:10. The head of them compassing me about:  the labour of their lips
shall overwhelm them.

139:11. Burning coals shall fall upon them; thou wilt cast them down
into the fire:  in miseries they shall not be able to stand.

139:12. A man full of tongue shall not be established in the earth:
evil shall catch the unjust man unto destruction.

139:13. I know that the Lord will do justice to the needy, and will
revenge the poor.

139:14. But as for the just, they shall give glory to thy name:  and the
upright shall dwell with thy countenance.



Psalms Chapter 140


Domine, clamavi.

A prayer against sinful words, and deceitful flatterers.

A psalm of David.

140:1. I have cried to thee, O Lord, hear me:  hearken to my voice, when
I cry to thee.

140:2. Let my prayer be directed as incense in thy sight; the lifting
up of my hands, as evening sacrifice.

140:3. Set a watch, O Lord, before my mouth:  and a door round about my
lips.

140:4. Incline not my heart to evil words; to make excuses in sins.
With men that work iniquity:  and I will not communicate with the
choicest of them.

140:5. The just man shall correct me in mercy, and shall reprove me:
but let not the oil of the sinner fatten my head.  For my prayer shall
still be against the things with which they are well pleased:

Let not the oil of the sinner, etc. . .That is, the flattery, or
deceitful praise.--Ibid.  For my prayer, etc. . .So far from coveting
their praises, who are never well pleased but with things that are
evil; I shall continually pray to be preserved from such things as they
are delighted with.

140:6. Their judges falling upon the rock have been swallowed up.  They
shall hear my words, for they have prevailed:

Their judges, etc. . .Their rulers, or chiefs, quickly vanish and
perish, like ships dashed against the rocks, and swallowed up by the
waves.  Let them then hear my words, for they are powerful and will
prevail; or, as it is in the Hebrew, for they are sweet.

140:7. As when the thickness of the earth is broken up upon the ground:
Our bones are scattered by the side of hell.

140:8. But to thee, O Lord, Lord, are my eyes:  in thee have I put my
trust, take not away my soul.

140:9. Keep me from the snare, which they have laid for me, and from
the stumblingblocks of them that work iniquity.

140:10. The wicked shall fall in his net:  I am alone until I pass.

I am alone, etc. . .Singularly protected by the Almighty, until I pass
all their nets and snares.



Psalms Chapter 141


Voce mea.

A prayer of David in extremity of danger.

141:1. Of understanding for David, A prayer when he was in the cave.  [1
Kings 24.]

141:2. I cried to the Lord with my voice:  with my voice I made
supplication to the Lord.

141:3. In his sight I pour out my prayer, and before him I declare my
trouble:

141:4. When my spirit failed me, then thou knewest my paths.  In this
way wherein I walked, they have hidden a snare for me.

141:5. I looked on my right hand, and beheld, and there was no one that
would know me.  Flight hath failed me:  and there is no one that hath
regard to my soul.

141:6. I cried to thee, O Lord:  I said:  Thou art my hope, my portion in
the land of the living.

141:7. Attend to my supplication:  for I am brought very low.  Deliver me
from my persecutors; for they are stronger than I.

141:8. Bring my soul out of prison, that I may praise thy name:  the
just wait for me, until thou reward me.



Psalms Chapter 142


Domine, exaudi.

The psalmist in tribulation calleth upon God for his delivery.  The
seventh penitential psalm.

142:1. A psalm of David, when his son Absalom pursued him.  [2 Kings 17.]
Hear, O Lord, my prayer:  give ear to my supplication in thy truth:
hear me in thy justice.

142:2. And enter not into judgment with thy servant:  for in thy sight
no man living shall be justified.

142:3. For the enemy hath persecuted my soul:  he hath brought down my
life to the earth.  He hath made me to dwell in darkness as those that
have been dead of old:

142:4. And my spirit is in anguish within me:  my heart within me is
troubled.

142:5. I remembered the days of old, I meditated on all thy works:  I
meditated upon the works of thy hands.

142:6. I stretched forth my hands to thee:  my soul is as earth without
water unto thee.

142:7. Hear me speedily, O Lord:  my spirit hath fainted away.  Turn not
away thy face from me, lest I be like unto them that go down into the
pit.

142:8. Cause me to hear thy mercy in the morning; for in thee have I
hoped.  Make the way known to me, wherein I should walk:  for I have
lifted up my soul to thee.

142:9. Deliver me from my enemies, O Lord, to thee have I fled:

142:10. Teach me to do thy will, for thou art my God.  Thy good spirit
shall lead me into the right land:

142:11. for thy name's sake, O Lord, thou wilt quicken me in thy justice.
Thou wilt bring my soul out of trouble:

142:12. And in thy mercy thou wilt destroy my enemies.  And thou wilt
cut off all them that afflict my soul:  for I am thy servant.



Psalms Chapter 143


Benedictus Dominus.

The prophet praiseth God, and prayeth to be delivered from his enemies.
No worldly happiness is to be compared with that of serving God.

A psalm of David against Goliath.

143:1. Blessed be the Lord my God, who teacheth my hands to fight, and
my fingers to war.

143:2. My mercy, and my refuge:  my support, and my deliverer:  My
protector, and I have hoped in him:  who subdueth my people under me.

143:3. Lord, what is man, that thou art made known to him?  or the son
of man, that thou makest account of him?

143:4. Man is like to vanity:  his days pass away like a shadow.

143:5. Lord, bow down thy heavens and descend:  touch the mountains, and
they shall smoke.

143:6. Send forth lightning, and thou shalt scatter them:  shoot out thy
arrows, and thou shalt trouble them.

143:7. Put forth thy hand from on high, take me out, and deliver me
from many waters:  from the hand of strange children:

143:8. Whose mouth hath spoken vanity:  and their right hand is the
right hand of iniquity.

143:9. To thee, O God, I will sing a new canticle:  on the psaltery and
an instrument of ten strings I will sing praises to thee.

143:10. Who givest salvation to kings:  who hast redeemed thy servant
David from the malicious sword:

143:11. Deliver me, And rescue me out of the hand of strange children;
whose mouth hath spoken vanity:  and their right hand is the right hand
of iniquity:

143:12. Whose sons are as new plants in their youth:  Their daughters
decked out, adorned round about after the similitude of a temple:

143:13. Their storehouses full, flowing out of this into that.  Their
sheep fruitful in young, abounding in their goings forth:

143:14. Their oxen fat.  There is no breach of wall, nor passage, nor
crying out in their streets.

143:15. They have called the people happy, that hath these things:  but
happy is that people whose God is the Lord.



Psalms Chapter 144


Exaltabo te, Deus.

A psalm of praise, to the infinite majesty of God.

144:1. Praise, for David himself.  I will extol thee, O God my king:  and
I will bless thy name for ever; yea, for ever and ever.

144:2. Every day will I bless thee:  and I will praise thy name for
ever; yea, for ever and ever.

144:3. Great is the Lord, and greatly to be praised:  and of his
greatness there is no end.

144:4. Generation and generation shall praise thy works:  and they shall
declare thy power.

144:5. They shall speak of the magnificence of the glory of thy
holiness:  and shall tell thy wondrous works.

144:6. And they shall speak of the might of thy terrible acts:  and
shall declare thy greatness.

144:7. They shall publish the memory of the abundance of thy sweetness:
and shall rejoice in thy justice.

144:8. The Lord is gracious and merciful:  patient and plenteous in
mercy.

144:9. The Lord is sweet to all:  and his tender mercies are over all
his works.

144:10. Let all thy works, O lord, praise thee:  and let thy saints
bless thee.

144:11. They shall speak of the glory of thy kingdom:  and shall tell of
thy power:

144:12. To make thy might known to the sons of men:  and the glory of
the magnificence of thy kingdom.

144:13. Thy kingdom is a kingdom of all ages:  and thy dominion endureth
throughout all generations.  The Lord is faithful in all his words:  and
holy in all his works.

144:14. The Lord lifteth up all that fall:  and setteth up all that are
cast down.

144:15. The eyes of all hope in thee, O Lord:  and thou givest them meat
in due season.

144:16. Thou openest thy hand, and fillest with blessing every living
creature.

144:17. The Lord is just in all his ways:  and holy in all his works.

144:18. The Lord is nigh unto all them that call upon him:  to all that
call upon him in truth.

144:19. He will do the will of them that fear him:  and he will hear
their prayer, and save them.

144:20. The Lord keepeth all them that love him; but all the wicked he
will destroy.

144:21. My mouth shall speak the praise of the Lord:  and let all flesh
bless his holy name forever; yea, for ever and ever.



Psalms Chapter 145


Lauda, anima.

We are not to trust in men, but in God alone.

145:1. Alleluia, of Aggeus and Zacharias.

145:2. Praise the Lord, O my soul, in my life I will praise the Lord:  I
will sing to my God as long as I shall be.  Put not your trust in
princes:

145:3. In the children of men, in whom there is no salvation.

145:4. His spirit shall go forth, and he shall return into his earth:
in that day all their thoughts shall perish.

145:5. Blessed is he who hath the God of Jacob for his helper, whose
hope is in the Lord his God:

145:6. Who made heaven and earth, the sea, and all things that are in
them.

145:7. Who keepeth truth for ever:  who executeth judgment for them that
suffer wrong:  who giveth food to the hungry.  The Lord looseth them that
are fettered:

145:8. The Lord enlighteneth the blind.  The Lord lifteth up them that
are cast down:  the Lord loveth the just.

145:9. The Lord keepeth the strangers, he will support the fatherless
and the widow:  and the ways of sinners he will destroy.

145:10. The Lord shall reign for ever:  thy God, O Sion, unto generation
and generation.



Psalms Chapter 146


Laudate Dominum.

An exhortation to praise God for his benefits.

146:1. Alleluia.  Praise ye the Lord, because psalm is good:  to our God
be joyful and comely praise.

146:2. The Lord buildeth up Jerusalem:  he will gather together the
dispersed of Israel.

146:3. Who healeth the broken of heart, and bindeth up their bruises.

146:4. Who telleth the number of the stars:  and calleth them all by
their names.

146:5. Great is our Lord, and great is his power:  and of his wisdom
there is no number.

146:6. The Lord lifteth up the meek, and bringeth the wicked down even
to the ground.

146:7. Sing ye to the Lord with praise:  sing to our God upon the harp.

146:8. Who covereth the heaven with clouds, and prepareth rain for the
earth.  Who maketh grass to grow on the mountains, and herbs for the
service of men.

146:9. Who giveth to beasts their food:  and to the young ravens that
call upon him.

146:10. He shall not delight in the strength of the horse:  nor take
pleasure in the legs of a man.

146:11. The Lord taketh pleasure in them that fear him:  and in them
that hope in his mercy.



Psalms Chapter 147


Lauda, Jerusalem.

The church is called upon to praise God for his peculiar graces and
favours to his people.  In the Hebrew, this psalm is joined to the
foregoing.

Alleluia.

147:12. Praise the Lord, O Jerusalem:  praise thy God, O Sion.

147:13. Because he hath strengthened the bolts of thy gates, he hath
blessed thy children within thee.

147:14. Who hath placed peace in thy borders:  and filleth thee with the
fat of corn.

147:15. Who sendeth forth his speech to the earth:  his word runneth
swiftly.

147:16. Who giveth snow like wool:  scattereth mists like ashes.

147:17. He sendeth his crystal like morsels:  who shall stand before the
face of his cold?

He sendeth his crystal. . .That is, his ice.  Some understand it of hail,
which is, as it were, ice, divided into particles or morsels.

147:18. He shall send out his word, and shall melt them:  his wind shall
blow, and the waters shall run.

147:19. Who declareth his word to Jacob:  his justices and his judgments
to Israel.

147:20. He hath not done in like manner to every nation:  and his
judgments he hath not made manifest to them.  Alleluia.



Psalms Chapter 148


Laudate Dominum de caelis.

All creatures are invited to praise their Creator.

Alleluia.

148:1. Praise ye the Lord from the heavens:  praise ye him in the high
places.

148:2. Praise ye him, all his angels, praise ye him, all his hosts.

148:3. Praise ye him, O sun and moon:  praise him, all ye stars and
light.

148:4. Praise him, ye heavens of heavens:  and let all the waters that
are above the heavens

148:5. Praise the name of the Lord.  For he spoke, and they were made:
he commanded, and they were created.

148:6. He hath established them for ever, and for ages of ages:  he hath
made a decree, and it shall not pass away.

148:7. Praise the Lord from the earth, ye dragons, and all ye deeps:

148:8. Fire, hail, snow, ice, stormy winds, which fulfil his word:

148:9. Mountains and all hills, fruitful trees and all cedars:

148:10. Beasts and all cattle:  serpents and feathered fowls:

148:11. Kings of the earth and all people:  princes and all judges of
the earth:

148:12. Young men and maidens:  let the old with the younger, praise the
name of the Lord:

148:13. For his name alone is exalted.

148:14. The praise of him is above heaven and earth:  and he hath
exalted the horn of his people.  A hymn to all his saints to the
children of Israel, a people approaching to him.  Alleluia.



Psalms Chapter 149


Cantate Domino.

The church is particularly bound to praise God.

Alleluia.

149:1. Sing ye to the Lord a new canticle:  let his praise be in the
church of the saints.

149:2. Let Israel rejoice in him that made him:  and let the children of
Sion be joyful in their king.

149:3. Let them praise his name in choir:  let them sing to him with the
timbrel and the psaltery.

149:4. For the Lord is well pleased with his people:  and he will exalt
the meek unto salvation.

149:5. The saints shall rejoice in glory:  they shall be joyful in their
beds.

149:6. The high praises of God shall be in their mouth:  and two-edged
swords in their hands:

149:7. To execute vengeance upon the nations, chastisements among the
people:

149:8. To bind their kings with fetters, and their nobles with manacles
of iron.

149:9. To execute upon them the judgment that is written:  this glory is
to all his saints.  Alleluia.



Psalms Chapter 150


Laudate Dominum in sanctis.

An exhortation to praise God with all sorts of instruments.

Alleluia.

150:1. Praise ye the Lord in his holy places:  praise ye him in the
firmament of his power.

150:2. Praise ye him for his mighty acts:  praise ye him according to
the multitude of his greatness.

150:3. Praise him with the sound of trumpet:  praise him with psaltery
and harp.

150:4. Praise him with timbrel and choir:  praise him with strings and
organs.

150:5. Praise him on high sounding cymbals:  praise him on cymbals of
joy:  let every spirit praise the Lord.  Alleluia.




THE BOOK OF PROVERBS



This Book is so called, because it consists of wise and weighty
sentences:  regulating the morals of men:  and directing them to wisdom
and virtue.  And these sentences are also called PARABLES, because great
truths are often couched in them under certain figures and similitudes.



Proverbs Chapter 1


The use and end of the proverbs.  An exhortation to flee the company of
the wicked:  and to hearken to the voice of wisdom.

1:1. The parables of Solomon, the son of David, king of Israel,

1:2. To know wisdom, and instruction:

1:3. To understand the words of prudence:  and to receive the
instruction of doctrine, justice, and judgment, and equity:

1:4. To give subtilty to little ones, to the young man knowledge and
understanding.

1:5. A wise man shall hear, and shall be wiser:  and he that
understandeth shall possess governments.

1:6. He shall understand a parable and the interpretation, the words of
the wise, and their mysterious sayings.

1:7. The fear of the Lord is the beginning of wisdom.  Fools despise
wisdom and instruction.

1:8. My son, hear the instruction of thy father, and forsake not the
law of thy mother:

1:9. That grace may be added to thy head, and a chain of gold to thy
neck.

1:10. My son, if sinners shall entice thee, consent not to them.

1:11. If they shall say:  Come with us, let us lie in wait for blood,
let us hide snares for the innocent without cause:

1:12. Let us swallow him up alive like hell, and whole as one that
goeth down into the pit.

1:13. We shall find all precious substance, we shall fill our houses
with spoils.

1:14. Cast in thy lot with us, let us all have one purse.

1:15. My son, walk not thou with them, restrain thy foot from their
paths.

1:16. For their feet run to evil, and make haste to shed blood.

1:17. But a net is spread in vain before the eyes of them that have
wings.

1:18. And they themselves lie in wait for their own blood, and practise
deceits against their own souls.

1:19. So the ways of every covetous man destroy the souls of the
possessors.

1:20. Wisdom preacheth abroad, she uttereth her voice in the streets:

1:21. At the head of multitudes she crieth out, in the entrance of the
gates of the city she uttereth her words, saying:

1:22. O children, how long will you love childishness, and fools covet
those things which are hurtful to themselves, and the unwise hate
knowledge?

1:23. Turn ye at my reproof:  behold I will utter my spirit to you, and
will shew you my words.

1:24. Because I called, and you refused:  I stretched out my hand, and
there was none that regarded.

1:25. You have despised all my counsel, and have neglected my
reprehensions.

1:26. I also will laugh in your destruction, and will mock when that
shall come to you which you feared.

1:27. When sudden calamity shall fall on you, and destruction, as a
tempest, shall be at hand:  when tribulation and distress shall come
upon you:

1:28. Then shall they call upon me, and I will not hear:  they shall
rise in the morning, and shall not find me:

1:29. Because they have hated instruction, and received not the fear of
the Lord,

1:30. Nor consented to my counsel, but despised all my reproof.

1:31. Therefore they shall eat the fruit of their own way, and shall be
filled with their own devices.

1:32. The turning away of little ones shall kill them, and the
prosperity of fools shall destroy them.

1:33. But he that shall hear me, shall rest without terror, and shall
enjoy abundance, without fear of evils.



Proverbs Chapter 2


The advantages of wisdom:  and the evils from which it delivers.

2:1. My son, if thou wilt receive my words, and wilt hide my
commandments with thee,

2:2. That thy ear may hearken to wisdom:  incline thy heart to know
prudence.

2:3. For if thou shalt call for wisdom, and incline thy heart to
prudence:

2:4. If thou shalt seek her as money, and shalt dig for her as for a
treasure:

2:5. Then shalt thou understand the fear of the Lord, and shalt find
the knowledge of God:

2:6. Because the Lord giveth wisdom:  and out of his mouth cometh
prudence and knowledge.

2:7. He wilt keep the salvation of the righteous, and protect them that
walk in simplicity,

2:8. Keeping the paths of justice, and guarding the ways of saints.

2:9. Then shalt thou understand justice, and judgment, and equity, and
every good path.

2:10. If wisdom shall enter into thy heart, and knowledge please thy
soul:

2:11. Counsel shall keep thee, and prudence shall preserve thee,

2:12. That thou mayst be delivered from the evil way, and from the man
that speaketh perverse things:

2:13. Who leave the right way, and walk by dark ways:

2:14. Who are glad when they have done evil, and rejoice in the most
wicked things:

2:15. Whose ways are perverse, and their steps infamous.

2:16. That thou mayst be delivered from the strange woman, and from the
stranger, who softeneth her words;

2:17. And forsaketh the guide of her youth,

2:18. And hath forgotten the covenant of her God:  for her house
inclineth unto death, and her paths to hell.

2:19. None that go in unto her, shall return again, neither shall they
take hold of the paths of life.

2:20. That thou mayst walk in a good way:  and mayst keep the paths of
the just.

2:21. For they that are upright, shall dwell in the earth; and the
simple shall continue in it.

2:22. But the wicked shall be destroyed from the earth:  and they that
do unjustly, shall be taken away from it.



Proverbs Chapter 3


An exhortation to the practice of virtue.

3:1. My son, forget not my law, and let thy heart keep my commandments.

3:2. For they shall add to thee length of days, and years of life, and
peace.

3:3. Let not mercy aud truth leave thee, put them about thy neck, and
write them in the tables of thy heart.

3:4. And thou shalt find grace, and good understanding before God and
men.

3:5. Have confidence in the Lord with all thy heart, and lean not upon
thy own prudence.

3:6. In all thy ways think on him, and he will direct thy steps.

3:7. Be not wise in thy own conceit:  fear God, and depart from evil:

3:8. For it shall be health to thy navel, and moistening to thy bones.

3:9. Honour the Lord with thy substance, and give him of the first of
all thy fruits;

3:10. And thy barns shall be filled with abundance, and thy presses
shall run over with wine.

3:11. My son, reject not the correction of the Lord:  and do not faint
when thou art chastised by him:

3:12. For whom the Lord loveth, he chastiseth:  and as a father in the
son he pleaseth himself.

3:13. Blessed is the man that findeth wisdom, and is rich in prudence:

3:14. The purchasing thereof is better than the merchandise of silver,
and her fruit than the chief and purest gold:

3:15. She is more precious than all riches:  and all the things that are
desired, are not to be compared to her.

3:16. Length of days is in her right hand, and in her left hand riches
and glory.

3:17. Her ways are beautiful ways, and all her paths are peaceable.

3:18. She is a tree of life to them that lay hold on her:  and he that
shall retain her is blessed.

3:19. The Lord by wisdom hath founded the earth, hath established the
heavens by prudence.

3:20. By his wisdom the depths have broken out, and the clouds grow
thick with dew.

3:21. My son, let not these things depart from thy eyes:  keep the law
and counsel:

3:22. And there shall be life to thy soul, and grace to thy mouth.

3:23. Then shalt thou walk confidently in thy way, and thy foot shall
not stumble:

3:24. If thou sleep, thou shalt not fear:  thou shalt rest, and thy
sleep shall be sweet.

3:25. Be not afraid of sudden fear, nor of the power of the wicked
falling upon thee.

3:26. For the Lord will be at thy side, and will keep thy foot that
thou be not taken.

3:27. Do not withhold him from doing good, who is able:  if thou art
able, do good thyself also.

3:28. Say not to thy friend:  Go, and come again:  and to morrow I will
give to thee:  when thou canst give at present.

3:29. Practise not evil against thy friend, when he hath confidence in
thee.

3:30. Strive not against a man without cause, when he hath done thee no
evil.

3:31. Envy not the unjust man, and do not follow his ways.

3:32. For every mocker is an abomination to the Lord, and his
communication is with the simple.

3:33. Want is from the Lord in the house of the wicked:  but the
habitations of the just shall be blessed.

3:34. He shall scorn the scorners, and to the meek he will give grace.

3:35. The wise shall possess glory:  the promotion of fools is disgrace.



Proverbs Chapter 4


A further exhortation to seek after wisdom.

4:1. Hear, ye children, the instruction of a father, and attend, that
you may know prudence.

4:2. I will give you a good gift, forsake not my law.

4:3. For I also was my father's son, tender, and as an only son in the
sight of my mother:

4:4. And he taught me, and said:  Let thy heart receive my words, keep
my commandments, and thou shalt live.

4:5. Get wisdom, get prudence:  forget not, neither decline from the
words of my mouth.

4:6. Forsake her not, and she shall keep thee:  love her, and she shall
preserve thee.

4:7. The beginning of wisdom, get wisdom, and with all thy possession
purchase prudence.

4:8. Take hold on her, and she shall exalt thee:  thou shalt be
glorified by her, when thou shalt embrace her.

4:9. She shall give to thy head increase of graces, and protect thee
with a noble crown.

4:10. Hear, O my son, and receive my words, that years of life may be
multiplied to thee.

4:11. I will shew thee the way of wisdom, I will lead thee by the paths
of equity:

4:12. Which when thou shalt have entered, thy steps shall not be
straitened, and when thou runnest, thou shalt not meet a
stumblingblock.

4:13. Take hold on instruction, leave it not:  keep it, because it is
thy life.

4:14. Be not delighted in the paths of the wicked, neither let the way
of evil men please thee.

4:15. Flee from it, pass not by it:  go aside, and forsake it.

4:16. For they sleep not, except they have done evil:  and their sleep
is taken away unless they have made some to fall.

4:17. They eat the bread of wickedness, and drink the wine of iniquity.

4:18. But the path of the just, as a shining light, goeth forwards, and
increaseth even to perfect day.

4:19. The way of the wicked is darksome:  they know not where they fall.

4:20. My son, hearken to my words, and incline thy ear to my sayings.

4:21. Let them not depart from thy eyes, keep them in the midst of thy
heart:

4:22. For they are life to those that find them, and health to all
flesh.

4:23. With all watchfulness keep thy heart, because life issueth out
from it.

4:24. Remove from thee a froward mouth, and let detracting lips be far
from thee.

4:25. Let thy eyes look straight on, and let thy eyelids go before thy
steps.

4:26. Make straight the path for thy feet, and all thy ways shall be
established.

4:27. Decline not to the right hand, nor to the left:  turn away thy
foot from evil.  For the Lord knoweth the ways that are on the right
hand:  but those are perverse which are on the left hand.  But he will
make thy courses straight, he will bring forward thy ways in peace.



Proverbs Chapter 5


An exhortation to fly unlawful lust, and the occasions of it.

5:1. My son, attend to my wisdom, and incline thy ear to my prudence,

5:2. That thou mayst keep thoughts, and thy lips may preserve
instruction.  Mind not the deceit of a woman.

5:3. For the lips of a harlot are like a honeycomb dropping, and her
throat is smoother than oil.

5:4. But her end is bitter as wormwood, and sharp as a two-edged sword.

5:5. Her feet go down into death, and her steps go in as far as hell.

5:6. They walk not by the path of life, her steps are wandering, and
unaccountable.

5:7. Now, therefore, my son, hear me, and depart not from the words of
my mouth.

5:8. Remove thy way far from her, and come not nigh the doors of her
house.

5:9. Give not thy honour to strangers, and thy years to the cruel.

5:10. Lest strangers be filled with thy strength, and thy labours be in
another man's house,

5:11. And thou mourn at the last, when thou shalt have spent thy flesh
and thy body, and say;

5:12. Why have I hated instruction, and my heart consented not to
reproof,

5:13. And have not heard the voice of them that taught me, and have not
inclined my ear to masters?

5:14. I have almost been in all evil, in the midst of the church and of
the congregation.

5:15. Drink water out of thy own cistern, and the streams of thy own
well:

5:16. Let thy fountains be conveyed abroad, and in the streets divide
thy waters.

5:17. Keep them to thyself alone, neither let strangers be partakers
with thee.

5:18. Let thy vein be blessed, and rejoice with the wife of thy youth:

5:19. Let her be thy dearest hind, and most agreeable fawn:  let her
breasts inebriate thee at all times:  be thou delighted continually with
her love.

5:20. Why art thou seduced, my son, by a strange woman, and art
cherished in the bosom of another?

5:21. The Lord beholdeth the ways of man, and considereth all his
steps.

5:22. His own iniquities catch the wicked, and he is fast bound with
the ropes of his own sins.

5:23. He shall die, because he hath not received instruction, and in
the multitude of his folly he shall be deceived.



Proverbs Chapter 6


Documents on several heads.

6:1. My son, if thou be surety for thy friend, thou hast engaged fast
thy hand to a stranger,

6:2. Thou art ensnared with the words of thy mouth, and caught with thy
own words.

6:3. Do, therefore, my son, what I say, and deliver thyself:  because
thou art fallen into the hand of thy neighbour.  Run about, make haste,
stir up thy friend:

6:4. Give not sleep to thy eyes, neither let thy eyelids slumber.

6:5. Deliver thyself as a doe from the hand, and as a bird from the
hand of the fowler.

6:6. Go to the ant, O sluggard, and consider her ways, and learn
wisdom:

6:7. Which, although she hath no guide, nor master, nor captain,

6:8. Provideth her meat for herself in the summer, and gathereth her
food in the harvest.

6:9. How long wilt thou sleep, O sluggard?  when wilt thou arise out of
thy sleep?

6:10. Thou wilt sleep a little, thou wilt slumber a little, thou wilt
fold thy hands a little to sleep:

6:11. And want shall come upon thee, as a traveller, and poverty as a
man armed.  But if thou be diligent, thy harvest shall come as a
fountain, and want shall flee far from thee.

6:12. A man that is an apostate, an unprofitable man, walketh with a
perverse mouth,

6:13. He winketh with the eyes, presseth with the foot, speaketh with
the finger.

6:14. With a wicked heart he deviseth evil, and at all times he soweth
discord.

6:15. To such a one his destruction shall presently come, and he shall
suddenly be destroyed, and shall no longer have any remedy.

6:16. Six things there are, which the Lord hateth, and the seventh his
soul detesteth:

6:17. Haughty eyes, a lying tongue, hands that shed innocent blood,

6:18. A heart that deviseth wicked plots, feet that are swift to run
into mischief,

6:19. A deceitful witness that uttereth lies, and him that soweth
discord among brethren.

6:20. My son, keep the commandments of thy father, and forsake not the
law of thy mother.

6:21. Bind them in thy heart continually, and put them about thy neck.

6:22. When thou walkest, let them go with thee:  when thou sleepest, let
them keep thee, and when thou awakest, talk with them.

6:23. Because the commandment is a lamp, and the law a light, and
reproofs of instruction are the way of life:

6:24. That they may keep thee from the evil woman, and from the
flattering tongue of the stranger.

6:25. Let not thy heart covet her beauty, be not caught with her winks:

6:26. For the price of a harlot is scarce one loaf:  but the woman
catcheth the precious soul of a man.

6:27. Can a man hide fire in his bosom, and his garments not burn?

6:28. Or can he walk upon hot coals, and his feet not be burnt?

6:29. So he that goeth in to his neighbour's wife, shall not be clean
when he shall touch her.

6:30. The fault is not so great when a man hath stolen:  for he stealeth
to fill his hungry soul:

The fault is not so great, etc. . .The sin of theft is not so great, as
to be compared with adultery:  especially when a person pressed with
hunger (which is the case here spoken of) steals to satisfy nature.
Moreover the damage done by theft may much more easily be repaired,
than the wrong done by adultery.  But this does not hinder, but that
theft also is a mortal sin, forbidden by one of the ten commandments.

6:31. And if he be taken, he shall restore sevenfold, and shall give up
all the substance of his house.

6:32. But he that is an adulterer, for the folly of his heart shall
destroy his own soul:

6:33. He gathereth to himself shame and dishonour, and his reproach
shall not be blotted out:

6:34. Because the jealousy and rage of the husband will not spare in
the day of revenge,

6:35. Nor will he yield to any man's prayers, nor will he accept for
satisfaction ever so many gifts.



Proverbs Chapter 7


The love of wisdom is the best preservative from being led astray by
temptation.

7:1. My son, keep my words, and lay up my precepts with thee.  Son,

7:2. Keep my commandments, and thou shalt live:  and my law as the apple
of thy eye:

7:3. Bind it upon thy fingers, write it upon the tables of thy heart.

7:4. Say to wisdom:  Thou art my sister:  and call prudence thy friend,

7:5. That she may keep thee from the woman that is not thine, and from
the stranger who sweeteneth her words.

7:6. For I looked out of the window of my house through the lattice,

7:7. And I see little ones, I behold a foolish young man,

7:8. Who passeth through the street by the corner, and goeth nigh the
way of her house,

7:9. In the dark when it grows late, in the darkness and obscurity of
the night.

7:10. And behold a woman meeteth him in harlot's attire, prepared to
deceive souls:  talkative and wandering,

7:11. Not bearing to be quiet, not able to abide still at home,

7:12. Now abroad, now in the streets, now lying in wait near the
corners.

7:13. And catching the young man, she kisseth him, and with an impudent
face, flattereth, saying:

7:14. I vowed victims for prosperity, this day I have paid my vows.

7:15. Therefore I am come out to meet thee, desirous to see thee, and I
have found thee.

7:16. I have woven my bed with cords, I have covered it with painted
tapestry, brought from Egypt.

7:17. I have perfumed my bed with myrrh, aloes, and cinnamon.

7:18. Come, let us be inebriated with the breasts, and let us enjoy the
desired embraces, till the day appear.

7:19. For my husband is not at home, he is gone a very long journey.

7:20. He took with him a bag of money:  he will return home the day of
the full moon.

7:21. She entangled him with many words, and drew him away with the
flattery of her lips.

7:22. Immediately he followeth her as an ox led to be a victim, and as
a lamb playing the wanton, and not knowing that he is drawn like a fool
to bonds,

7:23. Till the arrow pierce his liver:  as if a bird should make haste
to the snare, and knoweth not that his life is in danger.

7:24. Now, therefore, my son, hear me, and attend to the words of my
mouth.

7:25. Let not thy mind be drawn away in her ways:  neither be thou
deceived with her paths.

7:26. For she hath cast down many wounded, and the strongest have been
slain by her.

7:27. Her house is the way to hell, reaching even to the inner chambers
of death.



Proverbs Chapter 8


The preaching of wisdom.  Her excellence.

8:1. Doth not wisdom cry aloud, and prudence put forth her voice?

8:2. Standing in the top of the highest places by the way, in the midst
of the paths,

8:3. Beside the gates of the city, in the very doors she speaketh,
saying:

8:4. O ye men, to you I call, and my voice is to the sons of men.

8:5. O little ones understand subtlety, and ye unwise, take notice.

8:6. Hear, for I will speak of great things:  and my lips shall be
opened to preach right things.

8:7. My mouth shall meditate truth, and my lips shall hate wickedness.

8:8. All my words are just, there is nothing wicked, nor perverse in
them.

8:9. They are right to them that understand, and just to them that find
knowledge.

8:10. Receive my instruction, and not money:  choose knowledge rather
than gold.

8:11. For wisdom is better than all the most precious things:  and
whatsoever may be desired cannot be compared to it.

8:12. I, wisdom, dwell in counsel, and am present in learned thoughts.

8:13. The fear of the Lord hateth evil; I hate arrogance, and pride,
and every wicked way, and a mouth with a double tongue.

8:14. Counsel and equity is mine, prudence is mine, strength is mine.

8:15. By me kings reign, and lawgivers decree just things.

8:16. By me princes rule, and the mighty decree justice.

8:17. I love them that love me:  and they that in the morning early
watch for me, shall find me.

8:18. With me are riches and glory, glorious riches and justice.

8:19. For my fruit is better than gold and the precious stone, and my
blossoms than choice silver.

8:20. I walk in the way of justice, in the midst of the paths of
judgment,

8:21. That I may enrich them that love me, and may fill their
treasures.

8:22. The Lord possessed me in the beginning of his ways, before he
made any thing from the beginning.

8:23. I was set up from eternity, and of old, before the earth was
made.

8:24. The depths were not as yet, and I was already conceived, neither
had the fountains of waters as yet sprung out.

8:25. The mountains, with their huge bulk, had not as yet been
established:  before the hills, I was brought forth:

8:26. He had not yet made the earth, nor the rivers, nor the poles of
the world.

8:27. When he prepared the heavens, I was present:  when with a certain
law, and compass, he enclosed the depths:

8:28. When he established the sky above, and poised the fountains of
waters:

8:29. When he compassed the sea with its bounds, and set a law to the
waters that they should not pass their limits:  when he balanced the
foundations of the earth;

8:30. I was with him forming all things:  and was delighted every day,
playing before him at all times;

8:31. Playing in the world:  and my delights were to be with the
children of men.

8:32. Now, therefore, ye children, hear me:  blessed are they that keep
my ways.

8:33. Hear instruction, and be wise, and refuse it not.

8:34. Blessed is the man that heareth me, and that watcheth daily at my
gates, and waiteth at the posts of my doors.

8:35. He that shall find me, shall find life, and shall have salvation
from the Lord.

8:36. But he that shall sin against me shall hurt his own soul.  All
that hate me love death.



Proverbs Chapter 9


Wisdom invites all to her feast.  Folly calls another way.

9:1. Wisdom hath built herself a house, she hath hewn her out seven
pillars.

9:2. She hath slain her victims, mingled her wine, and set forth her
table.

9:3. She hath sent her maids to invite to the tower, and to the walls
of the city:

9:4. Whosoever is a little one, let him come to me.  And to the unwise
she said:

9:5. Come, eat my bread, and drink the wine which I have mingled for
you.

9:6. Forsake childishness, and live, and walk by the ways of prudence.

9:7. He that teacheth a scorner, doth an injury to himself; and he that
rebuketh a wicked man, getteth himself a blot.

9:8. Rebuke not a scorner, lest he hate thee.  Rebuke a wise man, and he
will love thee.

9:9. Give an occasion to a wise man, and wisdom shall be added to him.
Teach a just man, and he shall make haste to receive it.

9:10. The fear of the Lord is the beginning of wisdom:  and the
knowledge of the holy is prudence.

9:11. For by me shall thy days be multiplied, and years of life shall
be added to thee.

9:12. If thou be wise, thou shalt be so to thyself:  and if a scorner,
thou alone shalt bear the evil.

9:13. A foolish woman and clamorous, and full of allurements, and
knowing nothing at all,

9:14. Sat at the door of her house, upon a seat, in a high place of the
city,

9:15. To call them that pass by the way, and go on their journey:

9:16. He that is a little one, let him turn to me.  And to the fool she
said:

9:17. Stolen waters are sweeter, and hidden bread is more pleasant.

9:18. And he did not know that giants are there, and that her guests
are in the depths of hell.



Proverbs Chapter 10


In the twenty following chapters are contained many wise sayings and
axioms, relating to wisdom and folly, virtue and vice.

10:1. A wise son maketh the father glad:  but a foolish son is the
sorrow of his mother.

10:2. Treasures of wickedness shall profit nothing:  but justice shall
deliver from death.

10:3. The Lord will not afflict the soul of the just with famine, and
he will disappoint the deceitful practices of the wicked.

10:4. The slothful hand hath wrought poverty:  but the hand of the
industrious getteth riches.  He that trusteth to lies feedeth the winds:
and the same runneth after birds, that fly away.

10:5. He that gathereth in the harvest, is a wise son:  but he that
snorteth in the summer, is the son of confusion.

10:6. The blessing of the Lord is upon the head of the just:  but
iniquity covereth the mouth of the wicked.

10:7. The memory of the just is with praises:  and the name of the
wicked shall rot.

10:8. The wise of heart receiveth precepts:  a fool is beaten with lips.

10:9. He that walketh sincerely, walketh confidently:  but he that
perverteth his ways, shall be manifest.

10:10. He that winketh with the eye, shall cause sorrow:  and the
foolish in lips shall be beaten.

10:11. The mouth of the just is a vein of life:  and the mouth of the
wicked covereth iniquity.

10:12. Hatred stirreth up strifes:  and charity covereth all sins.

10:13. In the lips of the wise is wisdom found:  and a rod on the back
of him that wanteth sense.

10:14. Wise men lay up knowledge:  but the mouth of the fool is next to
confusion.

10:15. The substance of a rich man is the city of his strength:  the
fear of the poor is their poverty.

10:16. The work of the just is unto life:  but the fruit of the wicked
unto sin.

10:17. The way of life, to him that observeth correction:  but he that
forsaketh reproofs, goeth astray.

10:18. Lying lips hide hatred:  he that uttereth reproach, is foolish.

10:19. In the multitude of words there shall not want sin:  but he that
refraineth his lips, is most wise.

10:20. The tongue of the just is as choice silver:  but the heart of the
wicked is nothing worth.

10:21. The lips of the just teach many:  but they that are ignorant,
shall die in the want of understanding.

10:22. The blessing of the Lord maketh men rich:  neither shall
affliction be joined to them.

10:23. A fool worketh mischief as it were for sport:  but wisdom is
prudence to a man.

10:24. That which the wicked feareth, shall come upon him:  to the just
their desire shall be given.

10:25. As a tempest that passeth, so the wicked shall be no more:  but
the just is as an everlasting foundation.

10:26. As vinegar to the teeth, and smoke to the eyes, so is the
sluggard to them that sent him.

10:27. The fear of the Lord shall prolong days:  and the years of the
wicked shall be shortened.

10:28. The expectation of the just is joy:  but the hope of the wicked
shall perish.

10:29. The strength of the upright is the way of the Lord:  and fear to
them that work evil.

10:30. The just shall never be moved:  but the wicked shall not dwell on
the earth.

10:31. The mouth of the just shall bring forth wisdom:  the tongue of
the perverse shall perish.

10:32. The lips of the just consider what is acceptable:  and the mouth
of the wicked uttereth perverse things.



Proverbs Chapter 11


11:1. A deceitful balance is an abomination before the Lord:  and a just
weight is his will.

11:2. Where pride is, there also shall be reproach:  but where humility
is, there also is wisdom.

11:3. The simplicity of the just shall guide them:  and the
deceitfulness of the wicked shall destroy them.

11:4. Riches shall not profit in the day of revenge:  but justice shall
deliver from death.

11:5. The justice of the upright shall make his way prosperous:  and the
wicked man shall fall by his own wickedness.

11:6. The justice of the righteous shall deliver them:  and the unjust
shall be caught in their own snares.

11:7. When the wicked man is dead, there shall be no hope any more:  and
the expectation of the solicitous shall perish.

11:8. The just is delivered out of distress:  and the wicked shall be
given up for him.

11:9. The dissembler with his mouth deceiveth his friend:  but the just
shall be delivered by knowledge.

11:10. When it goeth well with the just, the city shall rejoice:  and
when the wicked perish, there shall be praise.

11:11. By the blessing of the just the city shall be exalted:  and by
the mouth of the wicked it shall be overthrown.

11:12. He that despiseth his friend, is mean of heart:  but the wise man
will hold his peace.

11:13. He that walketh deceitfully, revealeth secrets:  but he that is
faithful, concealeth the thing committed to him by his friend.

11:14. Where there is no governor, the people shall fall:  but there is
safety where there is much counsel.

11:15. He shall be afflicted with evil, that is surety for a stranger:
but he that is aware of snares, shall be secure.

11:16. A gracious woman shall find glory:  and the strong shall have
riches.

11:17. A merciful man doth good to his own soul:  but he that is cruel
casteth off even his own kindred.

11:18. The wicked maketh an unsteady work:  but to him that soweth
justice, there is a faithful reward.

11:19. Clemency prepareth life:  and the pursuing of evil things, death.

11:20. A perverse heart is abominable to the Lord:  and his will is in
them that walk sincerely.

11:21. Hand in hand the evil man shall not be innocent:  but the seed of
the just shall be saved.

11:22. A golden ring in a swine's snout, a woman fair and foolish.

11:23. The desire of the just is all good, the expectation of the
wicked is indignation.

11:24. Some distribute their own goods, and grow richer:  others take
away what is not their own, and are always in want.

11:25. The soul that blesseth, shall be made fat:  and he that
inebriateth, shall be inebriated also himself.

11:26. He that hideth up corn, shall be cursed among the people:  but a
blessing upon the head of them that sell.

11:27. Well doth he rise early who seeketh good things; but he that
seeketh after evil things, shall be oppressed by them.

11:28. He that trusteth in his riches shall fall:  but the just shall
spring up as a green leaf.

11:29. He that troubleth his own house, shall inherit the winds:  and
the fool shall serve the wise.

11:30. The fruit of the just man is a tree of life:  and he that gaineth
souls is wise.

11:31. If the just man receive in the earth, how much more the wicked
and the sinner.



Proverbs Chapter 12


12:1. He that loveth correction, loveth knowledge:  but he that hateth
reproof, is foolish.

12:2. He that is good, shall draw grace from the Lord:  but he that
trusteth in his own devices, doth wickedly.

12:3. Man shall not be strengthened by wickedness:  and the root of the
just shall not be moved.

12:4. A diligent woman is a crown to her husband:  and she that doth
things worthy of confusion, is as rottenness in his bones.

12:5. The thoughts of the just are judgments:  and the counsels of the
wicked are deceitful.

12:6. The words of the wicked lie in wait for blood:  the mouth of the
just shall deliver them.

12:7. Turn the wicked, and they shall not be:  but the house of the just
shall stand firm.

12:8. A man shall be known by his learning:  but he that is vain and
foolish, shall be exposed to contempt.

12:9. Better is the poor man that provideth for himself, than he that
is glorious and wanteth bread.

12:10. The just regardeth the lives of his beasts:  but the bowels of
the wicked are cruel.

12:11. He that tilleth his land shall be satisfied with bread:  but he
that pursueth idleness is very foolish.

12:12. He that is delighted in passing his time over wine, leaveth a
reproach in his strong holds.

12:12. The desire of the wicked is the fortification of evil men:  but
the root of the just shall prosper.

12:13. For the sins of the lips ruin draweth nigh to the evil man:  but
the just shall escape out of distress.

12:14. By the fruit of his own mouth shall a man be filled with good
things, and according to the works of his hands it shall be repaid him.

12:15. The way of a fool is right in his own eyes:  but he that is wise
hearkeneth unto counsels.

12:16. A fool immediately sheweth his anger:  but he that dissembleth
injuries is wise.

12:17. He that speaketh that which he knoweth, sheweth forth justice:
but he that lieth, is a deceitful witness.

12:18. There is that promiseth, and is pricked as it were with a sword
of conscience:  but the tongue of the wise is health.

12:19. The lip of truth shall be steadfast for ever:  but he that is a
hasty witness, frameth a lying tongue.

12:20. Deceit is in the heart of them that think evil things:  but joy
followeth them that take counsels of peace.

12:21. Whatsoever shall befall the just man, shall not make him sad:
but the wicked shall be filled with mischief.

12:22. Lying lips are an abomination to the Lord:  but they that deal
faithfully, please him.

12:23. A cautious man concealeth knowledge:  and the heart of fools
publisheth folly.

12:24. The hand of the valiant shall bear rule:  but that which is
slothful shall be under tribute.

12:25. Grief in the heart of a man shall bring him low, but with a good
word he shall be made glad.

12:26. He that neglecteth a loss for the sake of a friend, is just:  but
the way of the wicked shall deceive them.

12:27. The deceitful man shall not find gain:  but the substance of a
just man shall be precious gold.

12:28. In the path of justice is life:  but the bye-way leadeth to
death.



Proverbs Chapter 13


13:1. A wise son heareth the doctrine of his father:  but he that is a
scorner, heareth not when he is reproved.

13:2. Of the fruit of his own month shall a man be filled with good
things:  but the soul of transgressors is wicked.

13:3. He that keepeth his mouth keepeth his soul:  but he that hath no
guard on his speech shall meet with evils.

13:4. The sluggard willeth, and willeth not:  but the soul of them that
work, shall be made fat.

13:5. The just shall hate a lying word:  but the wicked confoundeth, and
shall be confounded.

13:6. Justice keepeth the way of the innocent:  but wickedness
overthroweth the sinner.

13:7. One is as it were rich, when he hath nothing and another is as it
were poor, when he hath great riches.

13:8. The ransom of a man's life are his riches:  but he that is poor,
beareth not reprehension.

13:9. The light of the just giveth joy:  but the lamp of the wicked
shall be put out.

13:10. Among the proud there are always contentions:  but they that do
all things with counsel, are ruled by wisdom.

13:11. Substance got in haste shall be diminished:  but that which by
little and little is gathered with the hand, shall increase.

13:12. Hope that is deferred afflicteth the soul:  desire when it
cometh, is a tree of life.

13:13. Whosoever speaketh ill of any thing, bindeth himself for the
time to come:  but he that feareth the commandment, shall dwell in
peace.  Deceitful souls go astray in sins:  the just are merciful, and
shew mercy.

13:14. The law of the wise is a fountain of life, that he may decline
from the ruin of death.

13:15. Good instruction shall give grace:  in the way of scorners is a
deep pit.

13:16. The prudent man doth all things with counsel:  but he that is a
fool, layeth open his folly.

13:17. The messenger of the wicked shall fall into mischief:  but a
faithful ambassador is health.

13:18. Poverty and shame to him that refuseth instruction:  but he that
yieldeth to reproof shall be glorified.

13:19. The desire that is accomplished, delighteth the soul:  fools hate
them that flee from evil things.

13:20. He that walketh with the wise, shall be wise:  a friend of fools
shall become like to them.

13:21. Evil pursueth sinners:  and to the just good shall be repaid.

13:22. The good man leaveth heirs, sons, and grandsons:  and the
substance of the sinner is kept for the just.

13:23. Much food is in the tillage of fathers:  but for others it is
gathered without judgment.

13:24. He that spareth the rod, hateth his son:  but he that loveth him,
correcteth him betimes.

13:25. The just eateth and filleth his soul:  but the belly of the
wicked is never to be filled.



Proverbs Chapter 14


14:1. A wise woman buildeth her house:  but the foolish will pull down
with her hands that also which is built.

14:2. He that walketh in the right way, and feareth God, is despised by
him that goeth by an infamous way.

14:3. In the mouth of a fool is the rod of pride:  but the lips of the
wise preserve them.

14:4. Where there are no oxen, the crib is empty:  but where there is
much corn, there the strength of the ox is manifest.

14:5. A faithful witness will not lie:  but a deceitful witness uttereth
a lie.

14:6. A scorner seeketh wisdom, and findeth it not:  the learning of the
wise is easy.

14:7. Go against a foolish man, and he knoweth not the lips of
prudence.

14:8. The wisdom of a discreet man is to understand his way:  and the
imprudence of fools erreth.

14:9. A fool will laugh at sin, but among the just grace shall abide.

14:10. The heart that knoweth the bitterness of his own soul, in his
joy the stranger shall not intermeddle.

14:11. The house of the wicked shall be destroyed:  but the tabernacles
of the just shall flourish.

14:12. There is a way which seemeth just to a man:  but the ends thereof
lead to death.

14:13. Laughter shall be mingled with sorrow, and mourning taketh hold
of the ends of joy.

14:14. A fool shall be filled with his own ways, and the good man shall
be above him.

14:15. The innocent believeth every word:  the discreet man considereth
his steps.  No good shall come to the deceitful son:  but the wise
servant shall prosper in his dealings, and his way shall be made
straight.

14:16. A wise man feareth, and declineth from evil:  the fool leapeth
over, and is confident.

14:17. The impatient man shall work folly:  and the crafty man is
hateful.

14:18. The childish shall possess folly, and the prudent shall look for
knowledge.

14:19. The evil shall fall down before the good:  and the wicked before
the gates of the just.

14:20. The poor man shall be hateful even to his own neighbour:  but the
friends of the rich are many.

14:21. He that despiseth his neighbour, sinneth:  but he that sheweth
mercy to the poor, shall be blessed.  He that believeth in the Lord,
loveth mercy.

14:22. They err that work evil:  but mercy and truth prepare good
things.

14:23. In much work there shall be abundance:  but where there are many
words, there is oftentimes want.

14:24. The crown of the wise, is their riches:  the folly of fools,
imprudence.

14:25. A faithful witness delivereth souls:  and the double dealer
uttereth lies.

14:26. In the fear of the Lord is confidence of strength, and there
shall be hope for his children.

14:27. The fear of the Lord is a fountain of life, to decline from the
ruin of death.

14:28. In the multitude of people is the dignity of the king:  and in
the small number of the people the dishonour of the prince.

14:29. He that is patient, is governed with much wisdom:  but he that is
impatient, exalteth his folly.

14:30. Soundness of heart is the life of the flesh:  but envy is the
rottenness of the bones.

14:31. He that oppresseth the poor, upbraideth his maker:  but he that
hath pity on the poor, honoureth him.

14:32. The wicked man shall be driven out in his wickedness:  but the
just hath hope in his death.

14:33. In the heart of the prudent resteth wisdom, and it shall
instruct all the ignorant.

14:34. Justice exalteth a nation:  but sin maketh nations miserable.

14:35. A wise servant is acceptable to the king:  he that is good for
nothing shall feel his anger.



Proverbs Chapter 15


15:1. A mild answer breaketh wrath:  but a harsh word stirreth up fury.

15:2. The tongue of the wise adorneth knowledge:  but the mouth of fools
bubbleth out folly.

15:3. The eyes of the Lord in every place behold the good and the evil.

15:4. A peaceable tongue is a tree of life:  but that which is
immoderate, shall crush the spirit.

15:5. A fool laugheth at the instruction of his father:  but he that
regardeth reproofs shall become prudent.  In abundant justice there is
the greatest strength:  but the devices of the wicked shall be rooted
out.

15:6. The house of the just is very much strength:  and in the fruits of
the wicked is trouble.

15:7. The lips of the wise shall disperse knowledge:  the heart of fools
shall be unlike.

15:8. The victims of the wicked are abominable to the Lord:  the vows of
the just are acceptable.

15:9. The way of the wicked is an abomination to the Lord:  he that
followeth justice is beloved by him.

15:10. Instruction is grievous to him that forsaketh the way of life:
he that hateth reproof shall die.

15:11. Hell and destruction are before the Lord:  how much more the
hearts of the children of men?

15:12. A corrupt man loveth not one that reproveth him:  nor will he go
to the wise.

15:13. A glad heart maketh a cheerful countenance:  but by grief of mind
the spirit is cast down.

15:14. The heart of the wise seeketh instruction:  and the mouth of
fools feedeth on foolishness.

15:15. All the days of the poor are evil:  a secure mind is like a
continual feast.

15:16. Better is a little with the fear of the Lord, than great
treasures without content.

15:17. It is better to be invited to herbs with love, than to a fatted
calf with hatred.

15:18. A passionate man stirreth up strifes:  he that is patient
appeaseth those that are stirred up.

15:19. The way of the slothful is as a hedge of thorns:  the way of the
just is without offence.

15:20. A wise son maketh a father joyful:  but the foolish man despiseth
his mother.

15:21. Folly is joy to the fool:  and the wise man maketh straight his
steps.

15:22. Designs are brought to nothing where there is no counsel:  but
where there are many counsellors, they are established.

15:23. A man rejoiceth in the sentence of his mouth:  and a word in due
time is best.

15:24. The path of life is above for the wise, that he may decline from
the lowest hell.

15:25. The Lord will destroy the house of the proud:  and will
strengthen the borders of the widow.

15:26. Evil thoughts are an abomination to the Lord:  and pure words
most beautiful shall be confirmed by him.

15:27. He that is greedy of gain troubleth his own house:  but he that
hateth bribes shall live.  By mercy and faith sins are purged away:  and
by the fear of the Lord every one declineth from evil.

15:28. The mind of the just studieth obedience:  the mouth of the wicked
overfloweth with evils.

15:29. The Lord is far from the wicked:  and he will hear the prayers of
the just.

15:30. The light of the eyes rejoiceth the soul:  a good name maketh the
bones fat.

15:31. The ear that heareth the reproofs of life, shall abide in the
midst of the wise.

15:32. He that rejecteth instruction, despiseth his own soul:  but he
that yieldeth to reproof, possesseth understanding.

15:33. The fear of the Lord is the lesson of wisdom:  and humility goeth
before glory.



Proverbs Chapter 16


16:1. It is the part of man to prepare the soul:  and of the Lord to
govern the tongue.

It is the part of man, etc. . .That is, a man should prepare in his
heart and soul what he is to say:  but after all, it must be the Lord
that must govern his tongue, to speak to the purpose.  Not that we can
think any thing of good without God's grace; but that after we have
(with God's grace) thought and prepared within our souls what we would
speak, if God does not govern our tongue, we shall not succeed in what
we speak.

16:2. All the ways of a man are open to his eyes:  the Lord is the
weigher of spirits.

16:3. Lay open thy works to the Lord:  and thy thoughts shall be
directed.

16:4. The Lord hath made all things for himself:  the wicked also for
the evil day.

16:5. Every proud man is an abomination to the Lord:  though hand should
be joined to hand, he is not innocent.  The beginning of a good way is
to do justice:  and this is more acceptable with God, than to offer
sacrifices.

16:6. By mercy and truth iniquity is redeemed; and by the fear of the
Lord men depart from evil.

16:7. When the ways of man shall please the Lord, he will convert even
his enemies to peace.

16:8. Better is a little with justice, than great revenues with
iniquity.

16:9. The heart of man disposeth his way:  but the Lord must direct his
steps.

16:10. Divination is in the lips of the king, his mouth shall not err
in judgment.

16:11. Weight and balance are judgments of the Lord:  and his work all
the weights of the bag.

16:12. They that act wickedly are abominable to the king:  for the
throne is established by justice.

16:13. Just lips are the delight of kings:  he that speaketh right
things shall be loved.

16:14. The wrath of a king is as messengers of death:  and the wise man
will pacify it.

16:15. In the cheerfulness of the king's countenance is life:  and his
clemency is like the latter rain.

16:16. Get wisdom, because it is better than gold:  and purchase
prudence, for it is more precious than silver.

16:17. The path of the just departeth from evils:  he that keepeth his
soul keepeth his way.

16:18. Pride goeth before destruction:  and the spirit is lifted up
before a fall.

16:19. It is better to be humbled with the meek, than to divide spoils
with the proud.

16:20. The learned in word shall find good things:  and he that trusteth
in the Lord is blessed.

16:21. The wise in heart shall be called prudent:  and he that is sweet
in words, shall attain to greater things.

16:22. Knowledge is a fountain of life to him that possesseth it:  the
instruction of fools is foolishness.

16:23. The heart of the wise shall instruct his mouth:  and shall add
grace to his lips.

16:24. Well ordered words are as a honeycomb:  sweet to the soul, and
health to the bones.

16:25. There is a way that seemeth to a man right:  and the ends thereof
lead to death.

16:26. The soul of him that laboureth, laboureth for himself, because
his mouth hath obliged him to it.

16:27. The wicked man diggeth evil, and in his lips is a burning fire.

16:28. A perverse man stirreth up quarrels:  and one full of words
separateth princes.

16:29. An unjust man allureth his friend:  and leadeth him into a way
that is not good.

16:30. He that with fixed eyes deviseth wicked things, biting his lips,
bringeth evil to pass.

16:31. Old age is a crown of dignity, when it is found in the ways of
justice.

16:32. The patient man is better than the valiant:  and he that ruleth
his spirit, than he that taketh cities.

16:33. Lots are cast into the lap, but they are disposed of by the
Lord.



Proverbs Chapter 17


17:1. Better is a dry morsel with joy, than a house full of victims
with strife.

17:2. A wise servant shall rule over foolish sons, and shall divide the
inheritance among the brethren.

17:3. As silver is tried by fire, and gold in the furnace:  so the Lord
trieth the hearts.

17:4. The evil man obeyeth an unjust tongue:  and the deceitful
hearkeneth to lying lips.

17:5. He that despiseth the poor, reproacheth his maker:  and he that
rejoiceth at another man's ruin, shall not be unpunished.

17:6. Children's children are the crown of old men:  and the glory of
children are their fathers.

17:7. Eloquent words do not become a fool, nor lying lips a prince.

17:8. The expectation of him that expecteth is a most acceptable jewel:
whithersoever he turneth himself, he understandeth wisely.

17:9. He that concealeth a transgression, seeketh friendships:  he that
repeateth it again, separateth friends.

17:10. A reproof availeth more with a wise man, than a hundred stripes
with a fool.

17:11. An evil man always seeketh quarrels:  but a cruel angel shall be
sent against him.

17:12. It is better to meet a bear robbed of her whelps, than a fool
trusting in his own folly.

17:13. He that rendereth evil for good, evil shall not depart from his
house.

17:14. The beginning of quarrels is as when one letteth out water:  and
before he suffereth reproach, he forsaketh judgment.

17:15. He that justifieth the wicked, and he that condemneth the just,
both are abominable before God.

17:16. What doth it avail a fool to have riches, seeing he cannot buy
wisdom?  He that maketh his house high, seeketh a downfall:  and he that
refuseth to learn, shall fall into evils.

17:17. He that is a friend loveth at all times:  and a brother is proved
in distress.

17:18. A foolish man will clap hands, when he is surety for his friend.

17:19. He that studieth discords, loveth quarrels:  and he that exalteth
his door, seeketh ruin.

17:20. He that is of a perverse heart, shall not find good:  and he that
perverteth his tongue, shall fall into evil.

17:21. A fool is born to his own disgrace:  and even his father shall
not rejoice in a fool.

17:22. A joyful mind maketh age flourishing:  a sorrowful spirit drieth
up the bones.

17:23. The wicked man taketh gifts out of the bosom, that he may
pervert the paths of judgment.

17:24. Wisdom shineth in the face of the wise:  the eyes of fools are in
the ends of the earth.

17:25. A foolish son is the anger of the father:  and the sorrow of the
mother that bore him.

17:26. It is no good thing to do hurt to the just:  nor to strike the
prince, who judgeth right.

17:27. He that setteth bounds to his words, is knowing and wise:  and
the man of understanding is of a precious spirit.

17:28. Even a fool, if he will hold his peace, shall be counted wise:
and if he close his lips, a man of understanding.



Proverbs Chapter 18


18:1. He that hath a mind to depart from a friend, seeketh occasions:
he shall ever be subject to reproach.

18:2. A fool receiveth not the words of prudence:  unless thou say those
things which are in his heart.

18:3. The wicked man, when he is come into the depths of sins,
contemneth:  but ignominy and reproach follow him.

18:4. Words from the mouth of a man are as deep water:  and the fountain
of wisdom is an overflowing stream.

18:5. It is not good to accept the person of the wicked, to decline
from the truth of judgment.

18:6. The lips of a fool intermeddle with strife:  and his mouth
provoketh quarrels.

18:7. The mouth of a fool is his destruction:  and his lips are the ruin
of his soul.

18:8. The words of the double tongued are as if they were harmless:  and
they reach even to the inner parts of the bowels.  Fear casteth down the
slothful:  and the souls of the effeminate shall be hungry.

18:9. He that is loose and slack in his work, is the brother of him
that wasteth his own works.

18:10. The name of the Lord is a strong tower:  the just runneth to it,
and shall be exalted.

18:11. The substance of the rich man is the city of his strength, and
as a strong wall compassing him about.

18:12. Before destruction, the heart of a man is exalted:  and before he
be glorified, it is humbled.

18:13. He that answereth before he heareth, sheweth himself to be a
fool, and worthy of confusion.

18:14. The spirit of a man upholdeth his infirmity:  but a spirit that
is easily angered, who can bear?

18:15. A wise heart shall acquire knowledge:  and the ear of the wise
seeketh instruction.

18:16. A man's gift enlargeth his way, and maketh him room before
princes.

18:17. The just is first accuser of himself:  his friend cometh, and
shall search him.

18:18. The lot suppresseth contentions, and determineth even between
the mighty.

18:19. A brother that is helped by his brother, is like a strong city:
and judgments are like the bars of cities.

18:20. Of the fruit of a man's mouth shall his belly be satisfied:  and
the offspring of his lips shall fill him.

18:21. Death and life are in the power of the tongue:  they that love
it, shall eat the fruits thereof.

18:22. He that hath found a good wife, hath found a good thing, and
shall receive a pleasure from the Lord.  He that driveth away a good
wife, driveth away a good thing:  but he that keepeth an adulteress, is
foolish and wicked.

18:23. The poor will speak with supplications, and the rich will speak
roughly.

18:24. A man amiable in society, shall be more friendly than a brother.



Proverbs Chapter 19


19:1. Better is the poor man, that walketh in his simplicity, than a
rich man that is perverse in his lips and unwise.

19:2. Where there is no knowledge of the soul, there is no good:  and he
that is hasty with his feet shall stumble.

19:3. The folly of a man supplanteth his steps:  and he fretteth in his
mind against God.

19:4. Riches make many friends:  but from the poor man, even they whom
he had, depart.

19:5. A false witness shall not be unpunished:  and he that speaketh
lies, shall not escape.

19:6. Many honour the person of him that is mighty, and are friends of
him that giveth gifts.

19:7. The brethren of the poor man hate him:  moreover also his friends
have departed far from him.  He that followeth after words only, shall
have nothing.

19:8. But he that possesseth a mind, loveth his own soul, and he that
keepeth prudence, shall find good things.

19:9. A false witness shall not be unpunished:  and he that speaketh
lies, shall perish.

19:10. Delicacies are not seemly for a fool:  nor for a servant to have
rule over princes.

19:11. The learning of a man is known by patience:  and his glory is to
pass over wrongs.

19:12. As the roaring of a lion, so also is the anger of a king:  and
his cheerfulness as the dew upon the grass.

19:13. A foolish son is the grief of his father:  and a wrangling wife
is like a roof continually dropping through.

19:14. House and riches are given by parents:  but a prudent wife is
properly from the Lord.

19:15. Slothfulness casteth into a deep sleep, and an idle soul shall
suffer hunger.

19:16. He that keepeth the commandment, keepeth his own soul:  but he
that neglecteth his own way, shall die.

19:17. He that hath mercy on the poor, lendeth to the Lord:  and he will
repay him.

19:18. Chastise thy son, despair not:  but to the killing of him set not
thy soul.

19:19. He that is impatient, shall suffer damage:  and when he shall
take away, he shall add another thing.

19:20. Hear counsel, and receive instruction, that thou mayst be wise
in thy latter end.

19:21. There are many thoughts in the heart of a man:  but the will of
the Lord shall stand firm.

19:22. A needy man is merciful:  and better is the poor than the lying
man.

19:23. The fear of the Lord is unto life:  and he shall abide in the
fulness without being visited with evil.

19:24. The slothful hideth his hand under his armpit, and will not so
much as bring it to his mouth.

19:25. The wicked man being scourged, the fool shall be wiser:  but if
thou rebuke a wise man, he will understand discipline.

19:26. He that afflicteth his father, and chaseth away his mother, is
infamous and unhappy.

19:27. Cease not, O my son, to hear instruction, and be not ignorant of
the words of knowledge.

19:28. An unjust witness scorneth judgment:  and the mouth of the wicked
devoureth iniquity.

19:29. Judgments are prepared for scorners:  and striking hammers for
the bodies of fools.



Proverbs Chapter 20


20:1. Wine is a luxurious thing, and drunkenness riotous:  whosoever is
delighted therewith, shall not be wise.

20:2. As the roaring of a lion, so also is the dread of a king:  he that
provoketh him, sinneth against his own soul.

20:3. It is an honour for a man to separate himself from quarrels:  but
all fools are meddling with reproaches.

20:4. Because of the cold the sluggard would not plough:  he shall beg
therefore in the summer, and it shall not be given him.

20:5. Counsel in the heart of a man is like deep water:  but a wise man
will draw it out.

20:6. Many men are called merciful:  but who shall find a faithful man?

20:7. The just that walketh in his simplicity, shall leave behind him
blessed children.

20:8. The king, that sitteth on the throne of judgment, scattereth away
all evil with his look.

20:9. Who can say:  My heart is clean, I am pure from sin?

20:10. Diverse weights and diverse measures, both are abominable before
God.

20:11. By his inclinations a child is known, if his works be clean and
right.

20:12. The hearing ear, and the seeing eye, the Lord hath made them
both.

20:13. Love not sleep, lest poverty oppress thee:  open thy eyes, and be
filled with bread.

20:14. It is naught, it is naught, saith every buyer:  and when he is
gone away, then he will boast.

20:15. There is gold and a multitude of jewels:  but the lips of
knowledge are a precious vessel.

20:16. Take away the garment of him that is surety for a stranger, and
take a pledge from him for strangers.

20:17. The bread of lying is sweet to a man:  but afterwards his mouth
shall be filled with gravel.

20:18. Designs are strengthened by counsels:  and wars are to be managed
by governments.

20:19. Meddle not with him that revealeth secrets, and walketh
deceitfully, and openeth wide his lips.

20:20. He that curseth his father, and mother, his lamp shall be put
out in the midst of darkness.

20:21. The inheritance gotten hastily in the beginning, in the end
shall be without a blessing.

20:22. Say not:  I will return evil:  wait for the Lord, and he will
deliver thee.

20:23. Diverse weights are an abomination before the Lord:  a deceitful
balance is not good.

20:24. The steps of men are guided by the Lord:  but who is the man that
can understand his own way?

20:25. It is ruin to a man to devour holy ones, and after vows to
retract.

20:26. A wise king scattereth the wicked, and bringeth over them the
wheel.

20:27. The spirit of a man is the lamp of the Lord, which searcheth all
the hidden things of the bowels.

20:28. Mercy and truth preserve the king, and his throne is
strengthened by clemency.

20:29. The joy of young men is their strength:  and the dignity of old
men, their grey hairs.

20:30. The blueness of a wound shall wipe away evils:  and stripes in
the more inward parts of the belly.



Proverbs Chapter 21


21:1. As the divisions of waters, so the heart of the king is in the
hand of the Lord:  whithersoever he will, he shall turn it.

21:2. Every way of a man seemeth right to himself:  but the Lord
weigheth the hearts.

21:3. To do mercy and judgment, pleaseth the Lord more than victims.

21:4. Haughtiness of the eyes is the enlarging of the heart:  the lamp
of the wicked is sin.

21:5. The thoughts of the industrious always bring forth abundance:  but
every sluggard is always in want.

21:6. He that gathereth treasures by a lying tongue, is vain and
foolish, and shall stumble upon the snares of death.

21:7. The robberies of the wicked shall be their downfall, because they
would not do judgment.

21:8. The perverse way of a man is strange:  but as for him that is
pure, his work is right.

21:9. It is better to sit in a corner of the housetop, than with a
brawling woman, and in a common house.

21:10. The soul of the wicked desireth evil, he will not have pity on
his neighbour.

21:11. When a pestilent man is punished, the little one will be wiser:
and if he follow the wise, he will receive knowledge.

21:12. The just considereth seriously the house of the wicked, that he
may withdraw the wicked from evil.

21:13. He that stoppeth his ear against the cry of the poor, shall also
cry himself, and shall not be heard.

21:14. A secret present quencheth anger:  and a gift in the bosom, the
greatest wrath.

21:15. It is joy to the just to do judgment:  and dread to them that
work iniquity.

21:16. A man that shall wander out of the way of doctrine, shall abide
in the company of the giants.

21:17. He that loveth good cheer, shall be in want:  he that loveth
wine, and fat things, shall not be rich.

21:18. The wicked is delivered up for the just:  and the unjust for the
righteous.

21:19. It is better to dwell in a wilderness, than with a quarrelsome
and passionate woman.

21:20. There is a treasure to be desired, and oil in the dwelling of
the just:  and the foolish man shall spend it.

21:21. He that followeth justice and mercy, shall find life, justice,
and glory.

21:22. The wise man hath scaled the city of the strong, and hath cast
down the strength of the confidence thereof.

21:23. He that keepeth his mouth and his tongue, keepeth his soul from
distress.

21:24. The proud and the arrogant is called ignorant, who in anger
worketh pride.

21:25. Desires kill the slothful:  for his hands have refused to work at
all.

21:26. He longeth and desireth all the day:  but he that is just, will
give, and will not cease.

21:27. The sacrifices of the wicked are abominable, because they are
offered of wickedness.

21:28. A lying witness shall perish:  an obedient man shall speak of
victory.

21:29. The wicked man impudently hardeneth his face:  but he that is
righteous, correcteth his way.

21:30. There is no wisdom, there is no prudence, there is no counsel
against the Lord.

21:31. The horse is prepared for the day of battle:  but the Lord giveth
safety.



Proverbs Chapter 22


22:1. A good name is better than great riches:  and good favour is above
silver and gold.

22:2. The rich and poor have met one another:  the Lord is the maker of
them both.

22:3. The prudent man saw the evil, and hid himself:  the simple passed
on, and suffered loss.

22:4. The fruit of humility is the fear of the Lord, riches and glory
and life.

22:5. Arms and swords are in the way of the perverse:  but he that
keepeth his own soul, departeth far from them.

22:6. It is a proverb:  A young man according to his way, even when he
is old, he will not depart from it.

22:7. The rich ruleth over the poor:  and the borrower is servant to him
that lendeth.

22:8. He that soweth iniquity, shall reap evils, and with the rod of
his anger he shall be consumed.

22:9. He that is inclined to mercy, shall be blessed:  for of his bread
he hath given to the poor.  He that maketh presents, shall purchase
victory and honour:  but he carrieth away the souls of the receivers.

22:10. Cast out the scoffer, and contention shall go out with him, and
quarrels and reproaches shall cease.

22:11. He that loveth cleanness of heart, for the grace of his lips
shall have the king for his friend.

22:12. The eyes of the Lord preserve knowledge:  and the words of the
unjust are overthrown.

22:13. The slothful man saith:  There is a lion without, I shall be
slain in the midst of the streets.

22:14. The mouth of a strange woman is a deep pit:  he whom the Lord is
angry with, shall fall into it.

22:15. Folly is bound up in the heart of a child, and the rod of
correction shall drive it away.

22:16. He that oppresseth the poor, to increase his own riches, shall
himself give to one that is richer, and shall be in need.

22:17. Incline thy ear, and hear the words of the wise:  and apply thy
heart to my doctrine:

22:18. Which shall be beautiful for thee, if thou keep it in thy
bowels, and it shall flow in thy lips:

22:19. That thy trust may be in the Lord, wherefore I have also shewn
it to thee this day.

22:20. Behold I have described it to thee three manner of ways, in
thoughts and knowledge:

22:21. That I might shew thee the certainty, and the words of truth, to
answer out of these to them that sent thee.

22:22. Do no violence to the poor, because he is poor:  and do not
oppress the needy in the gate:

22:23. Because the Lord will judge his cause:  and will afflict them
that have afflicted his soul.

22:24. Be not a friend to an angry man, and do not walk with a furious
man:

22:25. Lest perhaps thou learn his ways, and take scandal to thy soul.

22:26. Be not with them that fasten down their hands, and that offer
themselves sureties for debts:

22:27. For if thou have not wherewith to restore, what cause is there
that he should take the covering from thy bed?

22:28. Pass not beyond the ancient bounds which thy fathers have set.

22:29. Hast thou seen a man swift in his work?  he shall stand before
kings, and shall not be before those that are obscure.



Proverbs Chapter 23


23:1. When thou shalt sit to eat with a prince, consider diligently
what is set before thy face:

23:2. And put a knife to thy throat, if it be so that thou have thy
soul in thy own power.

23:3. Be not desirous of his meats, in which is the bread of deceit.

23:4. Labour not to be rich:  but set bounds to thy prudence.

23:5. Lift not up thy eyes to riches which thou canst not have:  because
they shall make themselves wings like those of an eagle, and shall fly
towards heaven.

23:6. Eat not with an envious man, and desire not his meats:

23:7. Because, like a soothsayer, and diviner, he thinketh that which
he knoweth not.  Eat and drink, will he say to thee:  and his mind is not
with thee.

23:8. The meats which thou hadst eaten, thou shalt vomit up:  and shalt
loose thy beautiful words.

23:9. Speak not in the ears of fools:  because they will despise the
instruction of thy speech.

23:10. Touch not the bounds of little ones:  and enter not into the
field of the fatherless:

23:11. For their near kinsman is strong:  and he will judge their cause
against thee.

23:12. Let thy heart apply itself to instruction and thy ears to words
of knowledge.

23:13. Withhold not correction from a child:  for if thou strike him
with the rod, he shall not die.

23:14. Thou shalt beat him with the rod, and deliver his soul from
hell.

23:15. My son, if thy mind be wise, my heart shall rejoice with thee:

23:16. And my reins shall rejoice, when thy lips shall speak what is
right.

23:17. Let not thy heart envy sinners:  but be thou in the fear of the
Lord all the day long:

23:18. Because thou shalt have hope in the latter end, and thy
expectation shall not be taken away.

23:19. Hear thou, my son, and be wise:  and guide thy mind in the way.

23:20. Be not in the feasts of great drinkers, nor in their revellings,
who contribute flesh to eat:

23:21. Because they that give themselves to drinking, and that club
together, shall be consumed:  and drowsiness shall be clothed with rags.

23:22. Hearken to thy father, that begot thee:  and despise not thy
mother when she is old.

23:23. Buy truth, and do not sell wisdom, and instruction, and
understanding.

23:24. The father of the just rejoiceth greatly:  he that hath begotten
a wise son, shall have joy in him.

23:25. Let thy father and thy mother be joyful, and let her rejoice
that bore thee.

23:26. My son, give me thy heart:  and let thy eyes keep my ways.

23:27. For a harlot is a deep ditch:  and a strange woman is a narrow
pit.

23:28. She lieth in wait in the way as a robber, and him whom she shall
see unwary, she will kill.

23:29. Who hath woe?  whose father hath woe?  who hath contentions?  who
falls into pits?  who hath wounds without cause?  who hath redness of
eyes?

23:30. Surely they that pass their time in wine, and study to drink off
their cups.

23:31. Look not upon the wine when it is yellow, when the colour
thereof shineth in the glass:  it goeth in pleasantly,

23:32. But in the end, it will bite like a snake, and will spread
abroad poison like a basilisk.

23:33. Thy eyes shall behold strange women, and thy heart shall utter
perverse things.

23:34. And thou shalt be as one sleeping in the midst of the sea, and
as a pilot fast asleep when the stern is lost.

23:35. And thou shalt say:  They have beaten me, but I was not sensible
of pain:  they drew me, and I felt not:  when shall I awake and find wine
again?



Proverbs Chapter 24


24:1. Seek not to be like evil men, neither desire to be with them:

24:2. Because their mind studieth robberies, and their lips speak
deceits.

24:3. By wisdom the house shall be built, and by prudence it shall be
strengthened.

24:4. By instruction the storerooms shall be filled with all precious
and most beautiful wealth.

24:5. A wise man is strong:  and a knowing man, stout and valiant.

24:6. Because war is managed by due ordering:  and there shall be safety
where there are many counsels.

24:7. Wisdom is too high for a fool; in the gate he shall not open his
mouth.

24:8. He that deviseth to do evils, shall be called a fool.

24:9. The thought of a fool is sin:  and the detractor is the
abomination of men.

24:10. If thou lose hope, being weary in the day of distress, thy
strength shall be diminished.

24:11. Deliver them that are led to death:  and those that are drawn to
death, forbear not to deliver.

24:12. If thou say:  I have not strength enough:  he that seeth into the
heart, he understandeth, and nothing deceiveth the keeper of thy soul,
and he shall render to a man according to his works.

24:13. Eat honey, my son, because it is good, and the honeycomb most
sweet to thy throat.

24:14. So also is the doctrine of wisdom to thy soul:  which when thou
hast found, thou shalt have hope in the end, and thy hope shall not
perish.

24:15. Lie not in wait, nor seek after wickedness in the house of the
just, nor spoil his rest.

24:16. For a just man shall fall seven times, and shall rise again:  but
the wicked shall fall down into evil.

24:17. When thy enemy shall fall, be not glad, and in his ruin let not
thy heart rejoice:

24:18. Lest the Lord see, and it displease him, and he turn away his
wrath from him.

24:19. Contend not with the wicked, nor seek to be like the ungodly.

24:20. For evil men have no hope of things to come, and the lamp of the
wicked shall be put out.

24:21. My son, fear the Lord, and the king:  and have nothing to do with
detractors.

24:22. For their destruction shall rise suddenly:  and who knoweth the
ruin of both?

24:23. These things also to the wise:  It is not good to have respect to
persons in judgment.

24:24. They that say to the wicked man:  Thou art just:  shall be cursed
by the people, and the tribes shall abhor them.

24:25. They that rebuke him shall be praised:  and a blessing shall come
upon them.

24:26. He shall kiss the lips, who answereth right words.

24:27. Prepare thy work without, and diligently till thy ground:  that
afterward thou mayst build thy house.

24:28. Be not witness without cause against thy neighbour:  and deceive
not any man with thy lips.

24:29. Say not:  I will do to him as he hath done to me:  I will render
to every one according to his work.

24:30. I passed by the field of the slothful man, and by the vineyard
of the foolish man:

24:31. And behold it was all filled with nettles, and thorns had
covered the face thereof, and the stone wall was broken down.

24:32. Which when I had seen, I laid it up in my heart, and by the
example I received instruction.

24:33. Thou wilt sleep a little, said I, thou wilt slumber a little,
thou wilt fold thy hands a little to rest.

24:34. And poverty shall come to thee as a runner, and beggary as an
armed man.



Proverbs Chapter 25


25:1. These are also parables of Solomon, which the men of Ezechias,
king of Juda, copied out.

25:2. It is the glory of God to conceal the word, and the glory of
kings to search out the speech.

25:3. The heaven above and the earth beneath, and the heart of kings is
unsearchable.

25:4. Take away the rust from silver, and there shall come forth a most
pure vessel:

25:5. Take away wickedness from the face of the king, and his throne
shall be established with justice.

25:6. Appear not glorious before the king, and stand not in the place
of great men.

25:7. For it is better that it should be said to thee:  Come up hither;
than that thou shouldst be humbled before the prince.

25:8. The things which thy eyes have seen, utter not hastily in a
quarrel:  lest afterward thou mayst not be able to make amends, when
thou hast dishonoured thy friend.

25:9. Treat thy cause with thy friend, and discover not the secret to a
stranger:

25:10. Lest he insult over thee, when he hath heard it, and cease not
to upbraid thee.  Grace and friendship deliver a man:  keep these for
thyself, lest thou fall under reproach.

25:11. To speak a word in due time, is like apples of gold on beds of
silver.

25:12. As an earring of gold and a bright pearl, so is he that
reproveth the wise, and the obedient ear.

25:13. As the cold of snow in the time of harvest, so is a faithful
messenger to him that sent him, for he refresheth his soul.

25:14. As clouds, and wind, when no rain followeth, so is the man that
boasteth, and doth not fulfil his promises.

25:15. By patience a prince shall be appeased, and a soft tongue shall
break hardness.

25:16. Thou hast found honey, eat what is sufficient for thee, lest
being glutted therewith thou vomit it up.

25:17. Withdraw thy foot from the house of thy neighbour, lest having
his fill he hate thee.

25:18. A man that beareth false witness against his neighbour, is like
a dart and a sword and a sharp arrow.

25:19. To trust in an unfaithful man in the time of trouble, is like a
rotten tooth, and weary foot,

25:20. And one that looseth his garment in cold weather.  As vinegar
upon nitre, so is he that singeth songs to a very evil heart.  As a moth
doth by a garment, and a worm by the wood:  so the sadness of a man
consumeth the heart.

25:21. If thy enemy be hungry, give him to eat:  if he thirst, give him
water to drink:

25:22. For thou shalt heap hot coals upon his head, and the Lord will
reward thee.

25:23. The north wind driveth away rain, as doth a sad countenance a
backbiting tongue.

25:24. It is better to sit in a corner of the housetop:  than with a
brawling woman, and in a common house.

25:25. As cold water to a thirsty soul, so are good tidings from a far
country.

25:26. A just man falling down before the wicked, is as a fountain
troubled with the foot and a corrupted spring.

25:27. As it is not good for a man to eat much honey, so he that is a
searcher of majesty shall be overwhelmed by glory.

Majesty. . .Viz., of God.  For to search into that incomprehensible
Majesty, and to pretend to sound the depths of the wisdom of God, is
exposing our weak understanding to be blinded with an excess of light
and glory, which it cannot comprehend.

25:28. As a city that lieth open and is not compassed with walls, so is
a man that cannot refrain his own spirit in speaking.



Proverbs Chapter 26


26:1. As snow in summer, and rain in harvest, so glory is not seemly
for a fool.

26:2. As a bird flying to other places, and a sparrow going here or
there:  so a curse uttered without cause shall come upon a man.

As a bird, etc. . .The meaning is, that a curse uttered without cause
shall do no harm to the person that is cursed, but will return upon him
that curseth, as whithersoever a bird flies, it returns to its own
nest.

26:3. A whip for a horse, and a snaffle for an ass, and a rod for the
back of fools.

26:4. Answer not a fool according to his folly, lest thou be made like
him.

Answer not a fool, etc. . .Viz., so as to imitate him but only so as to
reprove his folly.

26:5. Answer a fool according to his folly, lest he imagine himself to
be wise.

26:6. He that sendeth words by a foolish messenger, is lame of feet and
drinketh iniquity.

26:7. As a lame man hath fair legs in vain:  so a parable is unseemly in
the mouth of fools.

26:8. As he that casteth a stone into the heap of Mercury:  so is he
that giveth honour to a fool.

26:9. As if a thorn should grow in the hand of a drunkard:  so is a
parable in the mouth of fools.

26:10. Judgment determineth causes:  and he that putteth a fool to
silence, appeaseth anger.

26:11. As a dog that returneth to his vomit, so is the fool that
repeateth his folly.

26:12. Hast thou seen a man wise in his own conceit?  there shall be
more hope of a fool than of him.

26:13. The slothful man saith:  There is a lion in the way, and a
lioness in the roads.

26:14. As the door turneth upon its hinges, so doth the slothful upon
his bed.

26:15. The slothful hideth his hand under his armpit, and it grieveth
him to turn it to his mouth.

26:16. The sluggard is wiser in his own conceit, than seven men that
speak sentences.

26:17. As he that taketh a dog by the ears, so is he that passeth by in
anger, and meddleth with another man's quarrel.

26:18. As he is guilty that shooteth arrows, and lances unto death.

26:19. So is the man that hurteth his friend deceitfully:  and when he
is taken, saith:  I did it in jest.

26:20. When the wood faileth, the fire shall go out:  and when the
talebearer is taken away, contentions shall cease.

26:21. As coals are to burning coals, and wood to fire, so an angry man
stirreth up strife.

26:22. The words of a talebearer are as it were simple, but they reach
to the innermost parts of the belly.

26:23. Swelling lips joined with a corrupt heart, are like an earthern
vessel adorned with silver dross.

26:24. An enemy is known by his lips, when in his heart he entertaineth
deceit.

26:25. When he shall speak low, trust him not:  because there are seven
mischiefs in his heart.

26:26. He that covereth hatred deceitfully, his malice shall be laid
open in the public assembly.

26:27. He that diggeth a pit, shall fall into it:  and he that rolleth a
stone, it shall return to him.

26:28. A deceitful tongue loveth not truth:  and a slippery mouth
worketh ruin.



Proverbs Chapter 27


27:1. Boast not for to morrow, for thou knowest not what the day to
come may bring forth.

27:2. Let another praise thee, and not thy own mouth:  a stranger, and
not thy own lips.

27:3. A stone is heavy, and sand weighty:  but the anger of a fool is
heavier than them both.

27:4. Anger hath no mercy:  nor fury, when it breaketh forth:  and who
can bear the violence of one provoked?

27:5. Open rebuke is better than hidden love.

27:6. Better are the wounds of a friend, than the deceitful kisses of
an enemy.

27:7. A soul that is full shall tread upon the honeycomb:  and a soul
that is hungry shall take even bitter for sweet.

27:8. As a bird that wandereth from her nest, so is a man that leaveth
his place.

27:9. Ointment and perfumes rejoice the heart:  and the good counsels of
a friend are sweet to the soul.

27:10. Thy own friend, and thy father's friend, forsake not:  and go not
into thy brother's house in the day of thy affliction.  Better is a
neighbour that is near than a brother afar off.

27:11. Study wisdom, my son, and make my heart joyful, that thou mayst
give an answer to him that reproacheth.

27:12. The prudent man seeing evil hideth himself:  little ones passing
on have suffered losses.

27:13. Take away his garment that hath been surety for a stranger:  and
take from him a pledge for strangers.

27:14. He that blesseth his neighbour with a loud voice, rising in the
night, shall be like to him that curseth.

27:15. Roofs dropping through in a cold day, and a contentious woman
are alike.

27:16. He that retaineth her, is as he that would hold the wind, and
shall call the oil of his right hand.

27:17. Iron sharpeneth iron, so a man sharpeneth the countenance of his
friend.

27:18. He that keepeth the fig tree, shall eat the fruit thereof:  and
he that is the keeper of his master, shall be glorified.

27:19. As the faces of them that look therein, shine in the water, so
the hearts of men are laid open to the wise.

27:20. Hell and destruction are never filled:  so the eyes of men are
never satisfied.

27:21. As silver is tried in the fining-pot, and gold in the furnace:
so a man is tried by the mouth of him that praiseth.  The heart of the
wicked seeketh after evils, but the righteous heart seeketh after
knowledge.

27:22. Though thou shouldst bray a fool in the mortar, as when a pestle
striketh upon sodden barley, his folly would not be taken from him.

27:23. Be diligent to know the countenance of thy cattle, and consider
thy own flocks:

27:24. For thou shalt not always have power:  but a crown shall be given
to generation and generation.

27:25. The meadows are open, and the green herbs have appeared, and the
hay is gathered out of the mountains.

27:26. Lambs are for thy clothing:  and kids for the price of the field.

27:27. Let the milk of the goats be enough for thy food, and for the
necessities of thy house, and for maintenance for thy handmaids.



Proverbs Chapter 28


28:1. The wicked man fleeth, when no man pursueth:  but the just, bold
as a lion, shall be without dread.

28:2. For the sins of the land many are the princes thereof:  and for
the wisdom of a man, and the knowledge of those things that are said,
the life of the prince shall be prolonged.

28:3. A poor man that oppresseth the poor, is like a violent shower,
which bringeth a famine.

28:4. They that forsake the law, praise the wicked man:  they that keep
it, are incensed against him.

28:5. Evil men think not on judgment:  but they that seek after the
Lord, take notice of all things.

28:6. Better is the poor man walking in his simplicity, than the rich
in crooked ways.

28:7. He that keepeth the law, is a wise son:  but he that feedeth
gluttons, shameth his father.

28:8. He that heapeth together riches by usury and loan, gathereth them
for him that will be bountiful to the poor.

28:9. He that turneth away his ears from hearing the law, his prayer
shall be an abomination.

28:10. He that deceiveth the just in a wicked way, shall fall in his
own destruction:  and the upright shall possess his goods.

28:11. The rich man seemeth to himself wise:  but the poor man that is
prudent shall search him out.

28:12. In the joy of the just there is great glory:  when the wicked
reign, men are ruined.

28:13. He that hideth his sins, shall not prosper:  but he that shall
confess, and forsake them, shall obtain mercy.

28:14. Blessed is the man that is always fearful:  but he that is
hardened in mind shall fall into evil.

28:15. As a roaring lion, and a hungry bear, so is a wicked prince over
the poor people.

28:16. A prince void of prudence shall oppress many by calumny:  but he
that hateth covetousness, shall prolong his days.

28:17. A man that doth violence to the blood of a person, if he flee
even to the pit, no man will stay him.

28:18. He that walketh uprightly, shall be saved:  he that is perverse
in his ways, shall fall at once.

28:19. He that tilleth his ground, shall be filled with bread:  but he
that followeth idleness, shall be filled with poverty.

28:20. A faithful man shall be much praised:  but he that maketh haste
to be rich, shall not be innocent.

28:21. He that hath respect to a person in judgment, doth not well:
such a man even for a morsel of bread forsaketh the truth.

28:22. A man that maketh haste to be rich, and envieth others, is
ignorant that poverty shall come upon him.

28:23. He that rebuketh a man, shall afterward find favour with him,
more than he that by a flattering tongue deceiveth him.

28:24. He that stealeth any thing from his father, or from his mother:
and saith, This is no sin, is the partner of a murderer.

28:26. He that boasteth and puffeth up himself, stirreth up quarrels:
but he that trusteth in the Lord, shall be healed.

28:26. He that trusteth in his own heart, is a fool:  but he that
walketh wisely, he shall be saved.

28:27. He that giveth to the poor shall not want:  he that despiseth his
entreaty, shall suffer indigence.

28:28. When the wicked rise up, men shall hide themselves:  when they
perish, the just shall be multiplied.



Proverbs Chapter 29


29:1. The man that with a stiff neck despiseth him that reproveth him,
shall suddenly be destroyed:  and health shall not follow him.

29:2. When just men increase, the people shall rejoice:  when the wicked
shall bear rule, the people shall mourn.

29:3. A man that loveth wisdom, rejoiceth his father:  but he that
maintaineth harlots, shall squander away his substance.

29:4. A just king setteth up the land:  a covetous man shall destroy it.

29:5. A man that speaketh to his friend with flattering and dissembling
words, spreadeth a net for his feet.

29:6. A snare shall entangle the wicked man when he sinneth:  and the
just shall praise and rejoice.

29:7. The just taketh notice of the cause of the poor:  the wicked is
void of knowledge.

29:8. Corrupt men bring a city to ruin:  but wise men turn away wrath.

29:9. If a wise man contend with a fool, whether he be angry, or laugh,
he shall find no rest.

29:10. Bloodthirsty men hate the upright:  but just men seek his soul.

29:11. A fool uttereth all his mind:  a wise man deferreth, and keepeth
it till afterwards.

29:12. A prince that gladly heareth lying words, hath all his servants
wicked.

29:13. The poor man and the creditor have met one another:  the Lord is
the enlightener of them both.

29:14. The king that judgeth the poor in truth, his throne shall be
established for ever.

29:15. The rod and reproof give wisdom:  but the child that is left to
his own will, bringeth his mother to shame.

29:16. When the wicked are multiplied, crimes shall be multiplied:  but
the just shall see their downfall.

29:17. Instruct thy son and he shall refresh thee, and shall give
delight to thy soul.

29:18. When prophecy shall fail, the people shall be scattered abroad:
but he that keepeth the law, is blessed.

29:19. A slave will not be corrected by words:  because he understandeth
what thou sayest, and will not answer.

29:20. Hast thou seen a man hasty to speak?  folly is rather to be
looked for, than his amendment.

29:21. He that nourisheth his servant delicately from his childhood,
afterwards shall find him stubborn.

29:22. A passionate man provoketh quarrels:  and he that is easily
stirred up to wrath, shall be more prone to sin.

29:23. Humiliation followeth the proud:  and glory shall uphold the
humble of spirit.

29:24. He that is partaker with a thief, hateth his own soul:  he
heareth one putting him to his oath, and discovereth not.

29:25. He that feareth man shall quickly fall:  he that trusteth in the
Lord, shall be set on high.

29:26. Many seek the face of the prince:  but the judgment of every one
cometh forth from the Lord.

29:27. The just abhor a wicked man:  and the wicked loathe them that are
in the right way.  The son that keepeth the word, shall be free from
destruction.



Proverbs Chapter 30


The wise man thinketh humbly of himself.  His prayer and sentiments upon
certain virtues and vices.

30:1. The words of Gatherer the son of Vomiter.  The vision which the
man spoke, with whom God is, and who being strengthened by God, abiding
with him, said:

Gatherer, etc. . .Or, as it is in the Latin, Congregans the son of
Vomens.  The Latin interpreter has given us in this place the
signification of the Hebrew names, instead of the names themselves,
which are in the Hebrew, Agur the son of Jakeh.  But whether this Agur
be the same person as Solomon, as many think, or a different person,
whose doctrine was adopted by Solomon, and inserted among his parables
or proverbs, is uncertain.

30:2. I am the most foolish of men, and the wisdom of men is not with
me.

30:3. I have not learned wisdom, and have not known the science of
saints.

30:4. Who hath ascended up into heaven, and descended?  who hath held
the wind in his hands?  who hath bound up the waters together as in a
garment?  who hath raised up all the borders of the earth?  what is his
name, and what is the name of his son, if thou knowest?

30:5. Every word of God is fire tried:  he is a buckler to them that
hope in him.

Is fire tried. . .That is, most pure, like gold purified by fire.

30:6. Add not any thing to his words, lest thou be reproved and found a
liar:

30:7. Two things I have asked of thee, deny them not to me before I
die.

30:8. Remove far from me vanity, and lying words.  Give me neither
beggary, nor riches:  give me only the necessaries of life:

30:9. Lest perhaps being filled, I should be tempted to deny, and say:
Who is the Lord?  or being compelled by poverty, I should steal, and
forswear the name of my God.

30:10. Accuse not a servant to his master, lest he curse thee, and thou
fall.

30:11. There is a generation that curseth their father, and doth not
bless their mother.

30:12. A generation that are pure in their own eyes, and yet are not
washed from their filthiness.

30:13. A generation, whose eyes are lofty, and their eyelids lifted up
on high.

30:14. A generation that for teeth hath swords, and grindeth with their
jaw teeth, to devour the needy from off the earth, and the poor from
among men.

30:15. The horseleech hath two daughters that say:  Bring, bring.  There
are three things that never are satisfied, and the fourth never saith:
It is enough.

The horseleech. . .Concupiscence, which hath two daughters that are
never satisfied, viz., lust and avarice.

30:16. Hell and the mouth of the womb, and the earth which is not
satisfied with water:  and the fire never saith:  It is enough.

30:17. The eye that mocketh at his father, and that despiseth the
labour of his mother in bearing him, let the ravens of the brooks pick
it out, and the young eagles eat it.

30:18. Three things are hard to me, and the fourth I am utterly
ignorant of.

30:19. The way of an eagle in the air, the way of a serpent upon a
rock, the way of a ship in the midst of the sea, and the way of a man
in youth.

30:20. Such also is the way of an adulterous woman, who eateth and
wipeth her mouth, and saith:  I have done no evil.

30:21. By three things the earth is disturbed, and the fourth it cannot
bear.

30:22. By a slave when he reigneth:  by a fool when be is filled with
meat:

30:23. By an odious woman when she is married:  and by a bondwoman when
she is heir to her mistress.

30:24. There are four very little things of the earth, and they are
wiser than the wise.

30:25. The ants, a feeble people, which provide themselves food in the
harvest:

30:26. The rabbit, a weak people, which maketh its bed in the rock:

30:27. The locust hath no king, yet they all go out by their bands:

30:28. The stellio supporteth itself on hands, and dwelleth in kings'
houses.

The stellio. . .A kind of house lizard marked with spots like stars,
from whence it has its name.

30:19. There are three things, which go well, and the fourth that
walketh happily:

30:30. A lion, the strongest of beasts, who hath no fear of any thing
he meeteth:

30:31. A cock girded about the loins:  and a ram:  and a king, whom none
can resist.

30:32. There is that hath appeared a fool after he was lifted up on
high:  for if he had understood, he would have laid his hand upon his
mouth.

30:33. And he that strongly squeezeth the paps to bring out milk,
straineth out butter:  and he that violently bloweth his nose, bringeth
out blood:  and he that provoketh wrath, bringeth forth strife.



Proverbs Chapter 31


An exhortation to chastity, temperance, and works of mercy; with the
praise of a wise woman.

31:1. The words of king Lamuel.  The vision wherewith his mother
instructed him.

Lamuel. . .This name signifies God with him, and is supposed to have
been one of the names of Solomon.

31:2. What, O my beloved, what, O the beloved of my womb, what, O the
beloved of my vows?

31:3. Give not thy substance to women, and thy riches to destroy kings.

31:4. Give not to kings, O Lamuel, give not wine to kings:  because
there is no secret where drunkenness reigneth:

31:5. And lest they drink and forget judgments, and pervert the cause
of the children of the poor.

31:6. Give strong drink to them that are sad; and wine to them that are
grieved in mind:

31:7. Let them drink, and forget their want, and remember their sorrow
no more.

31:8. Open thy mouth for the dumb, and for the causes of all the
children that pass.

31:9. Open thy mouth, decree that which is just, and do justice to the
needy and poor.

31:10. Who shall find a valiant woman?  far, and from the uttermost
coasts is the price of her.

31:11. The heart of her husband trusteth in her, and he shall have no
need of spoils.

31:12. She will render him good, and not evil all the days of her life.

31:13. She hath sought wool and flax, and hath wrought by the counsel
of her hands.

31:14. She is like the merchant's ship, she bringeth her bread from
afar.

31:15. And she hath risen in the night, and given a prey to her
household, and victuals to her maidens.

31:16. She hath considered a field, and bought it:  with the fruit of
her hands she hath planted a vineyard.

31:17. She hath girded her loins with strength, and hath strengthened
her arm.

31:18. She hath tasted, and seen that her traffic is good:  her lamp
shall not be put out in the night.

31:19. She hath put out her hand to strong things, and her fingers have
taken hold of the spindle.

31:20. She hath opened her hand to the needy, and stretched out her
hands to the poor.

31:21. She shall not fear for her house in the cold of snow:  for all
her domestics are clothed with double garments.

31:22. She hath made for herself clothing of tapestry:  fine linen, and
purple, is her covering.

31:23. Her husband is honourable in the gates, when he sitteth among
the senators of the land.

31:24. She made fine linen, and sold it, and delivered a girdle to the
Chanaanite.

The Chanaanite. . .The merchant, for Chanaanite, in Hebrew, signifies a
merchant.

31:25. Strength and beauty are her clothing, and she shall laugh in the
latter day.

31:26. She hath opened her mouth to wisdom, and the law of clemency is
on her tongue.

31:27. She hath looked well on the paths of her house, and hath not
eaten her bread idle.

31:28. Her children rose up, and called her blessed:  her husband, and
he praised her.

31:29. Many daughters have gathered together riches:  thou hast
surpassed them all.

31:30. Favour is deceitful, and beauty is vain:  the woman that feareth
the Lord, she shall be praised.

31:31. Give her of the fruit of her hands:  and let her works praise her
in the gates.




ECCLESIASTES



This Book is called Ecclesiastes, or The Preacher, (in Hebrew,
Coheleth,) because in it, Solomon, as an excellent preacher, setteth
forth the vanity of the things of this world:  to withdraw the hearts
and affections of men from such empty toys.



Ecclesiastes Chapter 1


The vanity of all temporal things.

1:1. The words of Ecclesiastes, the son of David, king of Jerusalem.

1:2. Vanity of vanities, said Ecclesiastes:  vanity of vanities, and all
is vanity.

1:3. What hath a man more of all his labour, that he taketh under the
sun?

1:4. One generation passeth away, and another generation cometh:  but
the earth standeth for ever.

1:5. The sun riseth, and goeth down, and returneth to his place:  and
there rising again,

1:6. Maketh his round by the south, and turneth again to the north:  the
spirit goeth forward surveying all places round about, and returneth to
his circuits.

1:7. All the rivers run into the sea, yet the sea doth not overflow:
unto the place from whence the rivers come, they return, to flow again.

1:8. All things are hard:  man cannot explain them by word.  The eye is
not filled with seeing, neither is the ear filled with hearing.

1:9. What is it that hath been?  the same thing that shall be.  What is
it that hath been done?  the same that shall be done.

1:10. Nothing under the sun is new, neither is any man able to say:
Behold this is new:  for it hath already gone before in the ages that
were before us.

1:11. There is no remembrance of former things:  nor indeed of those
things which hereafter are to come, shall there be any remembrance with
them that shall be in the latter end.

1:12. I Ecclesiastes was king over Israel in Jerusalem,

1:13. And I proposed in my mind to seek and search out wisely
concerning all things that are done under the sun.  This painful
occupation hath God given to the children of men, to be exercised
therein.

1:14. I have seen all things that are done under the sun, and behold
all is vanity, and vexation of spirit.

1:15. The perverse are hard to be corrected, and the number of fools is
infinite.

1:16. I have spoken in my heart, saying:  Behold I am become great, and
have gone beyond all in wisdom, that were before me in Jerusalem:  and
my mind hath contemplated many things wisely, and I have learned.

1:17. And I have given my heart to know prudence, and learning, and
errors, and folly:  and I have perceived that in these also there was
labour, and vexation of spirit,

1:18. Because in much wisdom there is much indignation:  and he that
addeth knowledge, addeth also labour.



Ecclesiastes Chapter 2


The vanity of pleasures, riches, and worldly labours.

2:1. I said in my heart:  I will go, and abound with delights, and enjoy
good things.  And I saw that this also was vanity.

2:2. Laughter I counted error:  and to mirth I said:  Why art thou vainly
deceived?

2:3. I thought in my heart, to withdraw my flesh from wine, that I
might turn my mind to wisdom, and might avoid folly, till I might see
what was profitable for the children of men:  and what they ought to do
under the sun, all the days of their life.

2:4. I made me great works, I built me houses, and planted vineyards,

2:5. I made gardens, and orchards, and set them with trees of all
kinds,

2:6. And I made me ponds of water, to water therewith the wood of the
young trees,

2:7. I got me menservants, and maidservants, and had a great family:
and herds of oxen, and great flocks of sheep, above all that were
before me in Jerusalem:

2:8. I heaped together for myself silver and gold, and the wealth of
kings, and provinces:  I made me singing men, and singing women, and the
delights of the sons of men, cups and vessels to serve to pour out
wine:

2:9. And I surpassed in riches all that were before me in Jerusalem:  my
wisdom also remained with me.

2:10. And whatsoever my eyes desired, I refused them not:  and I
withheld not my heart from enjoying every pleasure, and delighting
itself in the things which I had prepared:  and esteemed this my
portion, to make use of my own labour.

2:11. And when I turned myself to all the works which my hands had
wrought, and to the labours wherein I had laboured in vain, I saw in
all things vanity, and vexation of mind, and that nothing was lasting
under the sun.

2:12. I passed further to behold wisdom, and errors and folly, (What is
man, said I that he can follow the King his maker?)

2:13. And I saw that wisdom excelled folly, as much as light differeth
from darkness.

2:14. The eyes of a wise man are in his head:  the fool walketh in
darkness:  and I learned that they were to die both alike.

2:15. And I said in my heart:  If the death of the fool and mine shall
be one, what doth it avail me, that I have applied myself more to the
study of wisdom?  And speaking with my own mind, I perceived that this
also was vanity.

2:16. For there shall be no remembrance of the wise no more than of the
fool forever, and the times to come shall cover all things together
with oblivion:  the learned dieth in like manner as the unlearned.

2:17. And therefore I was weary of my life, when I saw that all things
under the sun are evil, and all vanity and vexation of spirit.

2:18. Again I hated all my application wherewith I had earnestly
laboured under the sun, being like to have an heir after me,

2:19. Whom I know not whether he will be a wise man or a fool, and he
shall have rule over all my labours with which I have laboured and been
solicitous:  and is there anything so vain?

2:20. Wherefore I left off and my heart renounced labouring anymore
under the sun.

2:21. For when a man laboureth in wisdom, and knowledge, and
carefulness, he leaveth what he hath gotten to an idle man:  so this
also is vanity, and a great evil.

2:22. For what profit shall a man have of all his labour, and vexation
of spirit, with which he hath been tormented under the sun?

2:23. All his days are full of sorrows and miseries, even in the night
he doth not rest in mind:  and is not this vanity?

2:24. Is it not better to eat and drink, and to shew his soul good
things of his labours?  and this is from the hand of God.

2:25. Who shall so feast and abound with delights as I?

2:26. God hath given to a man that is good in his sight, wisdom, and
knowledge, and joy:  but to the sinner he hath given vexation, and
superfluous care, to heap up and to gather together, and to give it to
him that hath pleased God:  but this also is vanity, and a fruitless
solicitude of the mind.



Ecclesiastes Chapter 3


All human things are liable to perpetual changes.  We are to rest on
God's providence, and cast away fruitless cares.

3:1. All things have their season, and in their times all things pass
under heaven.

3:2. A time to be born and a time to die.  A time to plant, and a time
to pluck up that which is planted.

3:3. A time to kill, and a time to heal.  A time to destroy, and a time
to build.

3:4. A time to weep, and a time to laugh.  A time to mourn, and a time
to dance.

3:5. A time to scatter stones, and a time to gather.  A time to embrace,
and a time to be far from embraces.

3:6. A time to get, and a time to lose.  A time to keep, and a time to
cast away.

3:7. A time to rend, and a time to sew.  A time to keep silence, and a
time to speak.

3:8. A time of love, and a time of hatred.  A time of war, and a time of
peace.

3:9. What hath man more of his labour?

3:10. I have seen the trouble, which God hath given the sons of men to
be exercised in it.

3:11. He hath made all things good in their time, and hath delivered
the world to their consideration, so that man cannot find out the work
which God hath made from the beginning to the end.

3:12. And I have known that there was no better thing than to rejoice,
and to do well in this life.

3:13. For every man that eateth and drinketh, and seeth good of his
labour, this is the gift of God.

3:14. I have learned that all the works which God hath made, continue
for ever:  we cannot add any thing, nor take away from those things
which God hath made that he may be feared.

3:15. That which hath been made, the same continueth:  the things that
shall be, have already been:  and God restoreth that which is past.

3:16. I saw under the sun in the place of judgment wickedness, and in
the place of justice iniquity.

3:17. And I said in my heart:  God shall judge both the just and the
wicked, and then shall be the time of every thing.

3:18. I said in my heart concerning the sons of men, that God would
prove them, and shew them to be like beasts.

3:19. Therefore the death of man, and of beasts is one, and the
condition of them both is equal:  as man dieth, so they also die:  all
things breathe alike, and man hath nothing more than beast:  all things
are subject to vanity.

Man hath nothing more, etc. . .Viz., as to the life of the body.

3:20. And all things go to one place:  of earth they were made, and into
earth they return together.

3:21. Who knoweth if the spirit of the children of Adam ascend upward,
and if the spirit of the beasts descend downward?

Who knoweth, etc. . .Viz., experimentally:  since no one in this life can
see a spirit.  But as to the spirit of the beasts, which is merely
animal, and become extinct by the death of the beast, who can tell the
manner it acts so as to give life and motion, and by death to descend
downward, that is, to be no more?

3:22. And I have found that nothing is better than for a man to rejoice
in his work, and that this is his portion.  For who shall bring him to
know the things that shall be after him?



Ecclesiastes Chapter 4


Other instances of human miseries.

4:1. I turned myself to other things, and I saw the oppressions that
are done under the sun, and the tears of the innocent, and they had no
comforter; and they were not able to resist their violence, being
destitute of help from any.

4:2. And I praised the dead rather than the living:

4:3. And I judged him happier than them both, that is not yet born, nor
hath seen the evils that are done under the sun.

4:4. Again I considered all the labours of men, and I remarked that
their industries are exposed to the envy of their neighbour:  so in this
also there is vanity, and fruitless care.

4:5. The fool foldeth his hands together, and eateth his own flesh,
saying:

4:6. Better is a handful with rest, than both hands full with labour,
and vexation of mind.

4:7. Considering I found also another vanity under the sun:

4:8. There is but one, and he hath not a second, no child, no brother,
and yet he ceaseth not to labour, neither are his eyes satisfied with
riches, neither doth he reflect, saying:  For whom do I labour, and
defraud my soul of good things?  in this also is vanity, and a grievous
vexation.

4:9. It is better therefore that two should be together, than one:  for
they have the advantage of their society:

4:10. If one fall he shall be supported by the other:  woe to him that
is alone, for when he falleth, he hath none to lift him up.

4:11. And if two lie together, they shall warm one another:  how shall
one alone be warmed?

4:12. And if a man prevail against one, two shall withstand him:  a
threefold cord is not easily broken.

4:13. Better is a child that is poor and wise, than a king that is old
and foolish, who knoweth not to foresee for hereafter.

4:14. Because out of prison and chains sometimes a man cometh forth to
a kingdom:  and another born king is consumed with poverty.

4:15. I saw all men living, that walk under the sun with the second
young man, who shall rise up in his place.

4:16. The number of the people, of all that were before him is
infinite:  and they that shall come afterwards, shall not rejoice in
him:  but this also is vanity, and vexation of spirit.

4:17. Keep thy foot, when thou goest into the house of God, and draw
nigh to hear.  For much better is obedience, than the victims of fools,
who know not what evil they do.



Ecclesiastes Chapter 5


Caution in words.  Vows are to be paid.  Riches are often pernicious:
the moderate use of them is the gift of God.

5:1. Speak not any thing rashly, and let not thy heart be hasty to
utter a word before God.  For God is in heaven, and thou upon earth:
therefore let thy words be few.

5:2. Dreams follow many cares:  and in many words shall be found folly.

5:3. If thou hast vowed any thing to God, defer not to pay it:  for an
unfaithful and foolish promise displeaseth him:  but whatsoever thou
hast vowed, pay it.

5:4. And it is much better not to vow, than after a vow not to perform
the things promised.

5:5. Give not thy mouth to cause thy flesh to sin:  and say not before
the angel:  There is no providence:  lest God be angry at thy words, and
destroy all the works of thy hands.

5:6. Where there are many dreams, there are many vanities, and words
without number:  but do thou fear God.

5:7. If thou shalt see the oppressions of the poor, and violent
judgments, and justice perverted in the province, wonder not at this
matter:  for he that is high hath another higher, and there are others
still higher than these:

5:8. Moreover there is the king that reigneth over all the land subject
to him.

5:9. A covetous man shall not be satisfied with money:  and he that
loveth riches shall reap no fruit from them:  so this also is vanity.

5:10. Where there are great riches, there are also many to eat them.
And what doth it profit the owner, but that he seeth the riches with
his eyes?

5:11. Sleep is sweet to a labouring man, whether he eat little or much:
but the fulness of the rich will not suffer him to sleep.

5:12. There is also another grievous evil, which I have seen under the
sun:  riches kept to the hurt of the owner.

5:13. For they are lost with very great affliction:  he hath begotten a
son, who shall be in extremity of want.

5:14. As he came forth naked from his mother's womb, so shall he
return, and shall take nothing away with him of his labour.

5:15. A most deplorable evil:  as he came, so shall he return.  What then
doth it profit him that he hath laboured for the wind?

5:16. All the days of his life he eateth in darkness, and in many
cares, and in misery, and sorrow.

5:17. This therefore hath seemed good to me, that a man should eat and
drink, and enjoy the fruit of his labour, wherewith he hath laboured
under the sun, all the days of his life, which God hath given him:  and
this is his portion.

5:18. And every man to whom God hath given riches, and substance, and
hath given him power to eat thereof, and to enjoy his portion, and to
rejoice of his labour:  this is the gift of God.

5:19. For he shall not much remember the days of his life, because God
entertaineth his heart with delight.



Ecclesiastes Chapter 6


The misery of the covetous man.

6:1. There is also another evil, which I have seen under the sun, and
that frequent among men:

6:2. A man to whom God hath given riches, and substance, and honour,
and his soul wanteth nothing of all that he desireth:  yet God doth not
give him power to eat thereof, but a stranger shall eat it up.  This is
vanity and a great misery.

6:3. If a man beget a hundred children, and live many years, and attain
to a great age, and his soul make no use of the goods of his substance,
and he be without burial:  of this man I pronounce, that the untimely
born is better than he.

6:4. For he came in vain, and goeth to darkness, and his name shall be
wholly forgotten.

6:5. He hath not seen the sun, nor known the distance of good and evil:

6:6. Although he lived two thousand years, and hath not enjoyed good
things:  do not all make haste to one place?

6:7. All the labour of man is for his mouth, but his soul shall not be
filled.

6:8. What hath the wise man more than the fool?  and what the poor man,
but to go thither, where there is life?

6:9. Better it is to see what thou mayst desire, than to desire that
which thou canst not know.  But this also is vanity, and presumption of
spirit.

6:10. He that shall be, his name is already called:  and it is known,
that he is a man, and cannot contend in judgment with him that is
stronger than himself.

6:11. There are many words that have much vanity in disputing.



Ecclesiastes Chapter 7


Prescriptions against worldly vanities:  mortification, patience, and
seeking wisdom.

7:1. What needeth a man to seek things that are above him, whereas he
knoweth not what is profitable for him in his life, in all the days of
his pilgrimage, and the time that passeth like a shadow?  Or who can
tell him what shall be after him under the sun?

7:2. A good name is better than precious ointments:  and the day of
death than the day of one's birth.

7:3. It is better to go to the house of mourning, than to the house of
feasting:  for in that we are put in mind of the end of all, and the
living thinketh what is to come.

7:4. Anger is better than laughter:  because by the sadness of the
countenance the mind of the offender is corrected.

Anger. . .That is, correction, or just wrath and zeal against evil.

7:5. The heart of the wise is where there is mourning, and the heart of
fools where there is mirth.

7:6. It is better to be rebuked by a wise man, than to be deceived by
the flattery of fools.

7:7. For as the crackling of thorns burning under a pot, so is the
laughter of a fool:  now this also is vanity.

7:8. Oppression troubleth the wise, and shall destroy the strength of
his heart.

7:9. Better is the end of a speech than the beginning.  Better is the
patient man than the presumptuous.

7:10. Be not quickly angry:  for anger resteth in the bosom of a fool.

7:11. Say not:  What thinkest thou is the cause that former times were
better than they are now?  for this manner of question is foolish.

7:12. Wisdom with riches is more profitable, and bringeth more
advantage to them that see the sun.

7:13. For as wisdom is a defence, so money is a defence:  but learning
and wisdom excel in this, that they give life to him that possesseth
them.

7:14. Consider the works of God, that no man can correct whom he hath
despised.

7:15. In the good day enjoy good things, and beware beforehand of the
evil day:  for God hath made both the one and the other, that man may
not find against him any just complaint.

7:16. These things also I saw in the days of my vanity:  A just man
perisheth in his justice, and a wicked man liveth a long time in his
wickedness.

7:17. Be not over just:  and be not more wise than is necessary, lest
thou become stupid.

Over just. . .Viz., By an excessive rigour in censuring the ways of God
in bearing with the wicked.

7:18. Be not overmuch wicked:  and be not foolish, lest thou die before
thy time.

Be not overmuch wicked. . .That is, lest by the greatness of your sin
you leave no room for mercy.

7:19. It is good that thou shouldst hold up the just, yea and from him
withdraw not thy hand:  for he that feareth God, neglecteth nothing.

7:20. Wisdom hath strengthened the wise more than ten princes of the
city.

7:21. For there is no just man upon earth, that doth good, and sinneth
not.

7:22. But do not apply thy heart to all words that are spoken:  lest
perhaps thou hear thy servant reviling thee.

7:23. For thy conscience knoweth that thou also hast often spoken evil
of others.

7:24. I have tried all things in wisdom.  I have said:  I will be wise:
and it departed farther from me,

7:25. Much more than it was:  it is a great depth, who shall find it
out?

7:26. I have surveyed all things with my mind, to know, and consider,
and seek out wisdom and reason:  and to know the wickedness of the fool,
and the error of the imprudent:

7:27. And I have found a woman more bitter than death, who is the
hunter's snare, and her heart is a net, and her hands are bands.  He
that pleaseth God shall escape from her:  but he that is a sinner, shall
be caught by her.

7:28. Lo this have I found, said Ecclesiastes, weighing one thing after
another, that I might find out the account,

7:29. Which yet my soul seeketh, and I have not found it.  One man among
a thousand I have found, a woman among them all I have not found.

7:30. Only this I have found, that God made man right, and he hath
entangled himself with an infinity of questions.  Who is as the wise
man?  and who hath known the resolution of the word?

Of the word. . .That is, of this obscure and difficult matter.



Ecclesiastes Chapter 8


True wisdom is to observe God's commandments.  The ways of God are
unsearchable.

8:1. The wisdom of a man shineth in his countenance, and the most
mighty will change his face.

8:2. I observe the mouth of the king, and the commandments of the oath
of God.

8:3. Be not hasty to depart from his face, and do not continue in an
evil work:  for he will do all that pleaseth him:

8:4. And his word is full of power:  neither can any man say to him:  Why
dost thou so?

8:5. He that keepeth the commandment, shall find no evil.  The heart of
a wiser man understandeth time and answer.

8:6. There is a time and opportunity for every business, and great
affliction for man:

8:7. Because he is ignorant of things past, and things to come he
cannot know by any messenger.

8:8. It is not in man's power to stop the spirit, neither hath he power
in the day of death, neither is he suffered to rest when war is at
hand, neither shall wickedness save the wicked.

8:9. All these things I have considered, and applied my heart to all
the works that are done under the sun.  Sometimes one man ruleth over
another to his own hurt.

8:10. I saw the wicked buried:  who also when they were yet living were
in the holy place, and were praised in the city as men of just works:
but this also is vanity.

8:11. For because sentence is not speedily pronounced against the evil,
the children of men commit evils without any fear.

8:12. But though a sinner do evil a hundred times, and by patience be
borne withal, I know from thence that it shall be well with them that
fear God, who dread his face.

8:13. But let it not be well with the wicked, neither let his days be
prolonged, but as a shadow let them pass away that fear not the face of
the Lord.

8:14. There is also another vanity, which is done upon the earth.  There
are just men to whom evils happen, as though they had done the works of
the wicked:  and there are wicked men, who are as secure as though they
had the deeds of the just:  but this also I judge most vain.

8:15. Therefore I commended mirth, because there was no good for a man
under the sun, but to eat, and drink, and be merry, and that he should
take nothing else with him of his labour in the days of his life, which
God hath given him under the sun.

No good for a man, etc. . .Some commentators think the wise man here
speaks in the person of the libertine:  representing the objections of
these men against divine providence, and the inferences they draw from
thence, which he takes care afterwards to refute.  But it may also be
said, that his meaning is to commend the moderate use of the goods of
this world, preferably to the cares and solicitudes of worldlings,
their attachment to vanity and curiosity, and presumptuously diving
into the unsearchable ways of divine providence.

8:16. And I applied my heart to know wisdom, and to understand the
distraction that is upon earth:  for there are some that day and night
take no sleep with their eyes.

8:17. And I understood that man can find no reason of all those works
of God that are done under the sun:  and the more he shall labour to
seek, so much the less shall he find:  yea, though the wise man shall
say, that he knoweth it, he shall not be able to find it.



Ecclesiastes Chapter 9


Man knows not certainty that he is in God's grace.  After death no more
work or merit.

9:1. All these things have I considered in my heart, that I might
carefully understand them:  there are just men and wise men, and their
works are in the hand of God:  and yet man knoweth not whether he be
worthy of love, or hatred:

9:2. But all things are kept uncertain for the time to come, because
all things equally happen to the just and to the wicked, to the good
and to the evil, to the clean and to the unclean, to him that offereth
victims, and to him that despiseth sacrifices.  As the good is, so also
is the sinner:  as the perjured, so he also that sweareth truth.

9:3. This is a very great evil among all things that are done under the
sun, that the same things happen to all men:  whereby also the hearts of
the children of men are filled with evil, and with contempt while they
live, and afterwards they shall be brought down to hell.

9:4. There is no man that liveth always, or that hopeth for this:  a
living dog is better than a dead lion.

9:5. For the living know that they shall die, but the dead know nothing
more, neither have they a reward any more:  for the memory of them is
forgotten.

Know nothing more. . .Viz., as to the transactions of this world, in
which they have now no part, unless it be revealed to them; neither
have they any knowledge or power now of doing any thing to secure their
eternal state, (if they have not taken care of it in their lifetime:)
nor can they now procure themselves any good, as the living always may
do, by the grace of God.

9:6. Their love also, and their hatred, and their envy are all
perished, neither have they any part in this world, and in the work
that is done under the sun.

9:7. Go then, and eat thy bread with joy, and drink thy wine with
gladness:  because thy works please God.

9:8. At all times let thy garments be white, and let not oil depart
from thy head.

9:9. Live joyfully with the wife whom thou lovest, all the days of thy
unsteady life, which are given to thee under the sun, all the time of
thy vanity:  for this is thy portion in life, and in thy labour
wherewith thou labourest under the sun.

9:10. Whatsoever thy hand is able to do, do it earnestly:  for neither
work, nor reason, nor wisdom, nor knowledge shall be in hell, whither
thou art hastening.

9:11. I turned me to another thing, and I saw that under the sun, the
race is not to the swift, nor the battle to the strong, nor bread to
the wise, nor riches to the learned, nor favour to the skilful:  but
time and chance in all.

9:12. Man knoweth not his own end:  but as fishes are taken with the
hook, and as birds are caught with the snare, so men are taken in the
evil time, when it shall suddenly come upon them.

9:13. This wisdom also I have seen under the sun, and it seemed to me
to be very great:

9:14. A little city, and few men in it:  there came against it a great
king, and invested it, and built bulwarks round about it, and the siege
was perfect.

9:15. Now there was found in it a man poor and wise, and he delivered
the city by his wisdom, and no man afterward remembered that poor man.

9:16. And I said that wisdom is better than strength:  how then is the
wisdom of the poor man slighted, and his words not heard?

9:17. The words of the wise are heard in silence, more than the cry of
a prince among fools.

9:18. Better is wisdom, than weapons of war:  and he that shall offend
in one, shall lose many good things.



Ecclesiastes Chapter 10


Observations on wisdom and folly, ambition and detraction.

10:1. Dying flies spoil the sweetness of the ointment.  Wisdom and glory
is more precious than a small and shortlived folly.

10:2. The heart of a wise man is in his right hand, and the heart of a
fool is in his left hand.

10:3. Yea, and the fool when he walketh in the way, whereas he himself
is a fool, esteemeth all men fools.

10:4. If the spirit of him that hath power, ascend upon thee, leave not
thy place:  because care will make the greatest sins to cease.

10:5. There is an evil that I have seen under the sun, as it were by an
error proceeding from the face of the prince:

10:6. A fool set in high dignity, and the rich sitting beneath.

10:7. I have seen servants upon horses:  and princes walking on the
ground as servants.

10:8. He that diggeth a pit, shall fall into it:  and he that breaketh a
hedge, a serpent shall bite him.

10:9. He that removeth stones, shall be hurt by them:  and he that
cutteth trees, shall be wounded by them.

10:10. If the iron be blunt, and be not as before, but be made blunt,
with much labour it shall be sharpened:  and after industry shall follow
wisdom.

10:11. If a serpent bite in silence, he is nothing better that
backbiteth secretly.

10:12. The words of the mouth of a wise man are grace:  but the lips of
a fool shall throw him down headlong.

10:13. The beginning of his words is folly, and the end of his talk is
a mischievous error.

10:14. A fool multiplieth words.  A man cannot tell what hath been
before him:  and what shall be after him, who can tell him?

10:15. The labour of fools shall afflict them that know not how to go
to the city.

10:16. Woe to thee, O land, when thy king is a child, and when the
princes eat in the morning.

10:17. Blessed is the land, whose king is noble, and whose princes eat
in due season for refreshment, and not for riotousness.

10:18. By slothfulness a building shall be brought down, and through
the weakness of hands, the house shall drop through.

10:19. For laughter they make bread, and wine that the living may
feast:  and all things obey money.

10:20. Detract not the king, no not in thy thought; and speak not evil
of the rich man in thy private chamber:  because even the birds of the
air will carry thy voice, and he that hath wings will tell what thou
hast said.



Ecclesiastes Chapter 11


Exhortation to works of mercy, while we have time, to diligence in
good, and to the remembrance of death and judgment.

11:1. Cast thy bread upon the running waters:  for after a long time
thou shalt find it again.

11:2. Give a portion to seven, and also to eight:  for thou knowest not
what evil shall be upon the earth.

11:3. If the clouds be full, they will pour out rain upon the earth.  If
the tree fall to the south, or to the north, in what place soever it
shall fall, there shall it be.

If the tree fall, etc. . .The state of the soul is unchangeable when
once she comes to heaven or hell:  and a soul that departs this life in
the state of grace, shall never fall from grace:  as on the other side,
a soul that dies out of the state of grace, shall never come to it.  But
this does not exclude a place of temporal punishments for such souls as
die in the state of grace:  yet not so as to be entirely pure:  and
therefore they shall be saved, indeed, yet so as by fire.  1 Cor. 3.13,
14, 15.

11:4. He that observeth the wind, shall not sow:  and he that
considereth the clouds, shall never reap.

11:5. As thou knowest not what is the way of the spirit, nor how the
bones are joined together in the womb of her that is with child:  so
thou knowest not the works of God, who is the maker of all.

11:6. In the morning sow thy seed, and in the evening let not thy hand
cease:  for thou knowest not which may rather spring up, this or that:
and if both together, it shall be the better.

11:7. The light is sweet, and it is delightful for the eyes to see the
sun.

11:8. If a man live many years, and have rejoiced in them all, he must
remember the darksome time, and the many days:  which when they shall
come, the things past shall be accused of vanity.

11:9. Rejoice therefore, O young man, in thy youth, and let thy heart
be in that which is good in the days of thy youth, and walk in the ways
of thy heart, and in the sight of thy eyes:  and know that for all these
God will bring thee into judgment.

11:10. Remove anger from thy heart, and put away evil from thy flesh.
For youth and pleasure are vain.



Ecclesiastes Chapter 12


The Creator is to be remembered in the days of our youth:  all worldly
things are vain:  we should fear God and keep his commandments.

12:1. Remember thy Creator in the days of thy youth, before the time of
affliction come, and the years draw nigh of which thou shalt say:  They
please me not:

12:2. Before the sun, and the light, and the moon, and the stars be
darkened, and the clouds return after the rain:

Before the sun, etc. . .That is, before old age:  the effects of which
upon all the senses and faculties are described in the following
verses, under a variety of figures.

12:3. When the keepers of the house shall tremble, and the strong men
shall stagger, and the grinders shall be idle in a small number, and
they that look through the holes shall be darkened:

12:4. And they shall shut the doors in the street, when the grinder's
voice shall be low, and they shall rise up at the voice of the bird,
and all the daughters of music shall grow deaf.

12:5. And they shall fear high things, and they shall be afraid in the
way, the almond tree shall flourish, the locust shall be made fat, and
the caper tree shall be destroyed:  because man shall go into the house
of his eternity, and the mourners shall go round about in the street.

12:6. Before the silver cord be broken, and the golden fillet shrink
back, and the pitcher be crushed at the fountain, and the wheel be
broken upon the cistern,

12:7. And the dust return into its earth, from whence it was, and the
spirit return to God, who gave it.

12:8. Vanity of vanities, said Ecclesiastes, and all things are vanity.

12:9. And whereas Ecclesiastes was very wise, he taught the people, and
declared the things that he had done:  and seeking out, he set forth
many parables.

12:10. He sought profitable words, and wrote words most right, and full
of truth.

12:11. The words of the wise are as goads, and as nails deeply fastened
in, which by the counsel of masters are given from one shepherd.

12:12. More than these, my son, require not.  Of making many books there
is no end:  and much study is an affliction of the flesh.

12:13. Let us all hear together the conclusion of the discourse.  Fear
God, and keep his commandments:  for this is all man:

All man. . .The whole business and duty of man.

12:14. And all things that are done, God will bring into judgment for
every error, whether it be good or evil.

Error. . .Or, hidden and secret thing.




SOLOMON'S CANTICLE OF CANTICLES



This Book is called the Canticle of Canticles, that is to say, the most
excellent of all canticles:  because it is full of high mysteries,
relating to the happy union of Christ and his spouse:  which is here
begun by love; and is to be eternal in heaven.  The spouse of Christ is
the church:  more especially as to the happiest part of it, viz.,
perfect souls, every one of which is his beloved, but, above all
others, the immaculate and ever blessed virgin mother.



Canticle of Canticles Chapter 1


The spouse aspires to an union with Christ, their mutual love for one
another.

1:1. Let him kiss me with the kiss of his mouth:  for thy breasts are
better than wine,

Let him kiss me. . .The church, the spouse of Christ, prays that he may
love and have peace with her, which the spouse prefers to every thing
delicious:  and therefore expresses (ver. 2) that young maidens, that is
the souls of the faithful, have loved thee.

1:2. Smelling sweet of the best ointments.  Thy name is as oil poured
out:  therefore young maidens have loved thee.

1:3. Draw me:  we will run after thee to the odour of thy ointments.  The
king hath brought me into his storerooms:  we will be glad and rejoice
in thee, remembering thy breasts more than wine:  the rightous love
thee.

Draw me. . .That is, with thy grace:  otherwise I should not be able to
come to thee.  This metaphor shews that we cannot of ourselves come to
Christ our Lord, unless he draws us by his grace, which is laid up in
his storerooms:  that is, in the mysteries of Faith, which God in his
goodness and love for mankind hath revealed, first by his servant Moses
in the Old Law in figure only, and afterwards in reality by his only
begotten Son Jesus Christ.

1:4. I am black but beautiful, O ye daughters of Jerusalem, as the
tents of Cedar, as the curtains of Solomon.

I am black but beautiful. . .That is, the church of Christ founded in
humility appearing outwardly afflicted, and as it were black and
contemptible; but inwardly, that is, in its doctrine and morality, fair
and beautiful.

1:5. Do not consider me that I am brown, because the sun hath altered
my colour:  the sons of my mother have fought against me, they have made
me the keeper in the vineyards:  my vineyard I have not kept.

1:6. Shew me, O thou whom my soul loveth, where thou feedest, where
thou liest in the midday, lest I begin to wander after the flocks of
thy companions.

1:7. If thou know not thyself, O fairest among women, go forth, and
follow after the steps of the flocks, and feed thy kids beside the
tents of the shepherds.

If thou know not thyself, etc. . .Christ encourages his spouse to follow
and watch her flock:  and though she know not entirely the power at hand
to assist her, he tells her, ver. 8, my company of horsemen, that is,
his angels, are always watching and protecting her.  And in the
following verses he reminds her of the virtues and gifts with which he
has endowed her.

1:8. To my company of horsemen, in Pharao's chariots, have I likened
thee, O my love.

1:9. Thy cheeks are beautiful as the turtledove's, thy neck as jewels.

1:10. We will make thee chains of gold, inlaid with silver.

1:11. While the king was at his repose, my spikenard sent forth the
odour thereof.

1:12. A bundle of myrrh is my beloved to me, he shall abide between my
breasts.

1:13. A cluster of cypress my love is to me, in the vineyards of
Engaddi.

1:14. Behold thou are fair, O my love, behold thou are fair, thy eyes
are as those of doves.

1:15. Behold thou art fair, my beloved, and comely.  Our bed is
flourishing.

1:16. The beams of our houses are of cedar, our rafters of cypress
trees.



Canticle of Canticles Chapter 2


Christ caresses his spouse:  he invites her to him.

2:1. I am the flower of the field, and the lily of the valleys.

I am the flower of the field. . .Christ professes himself the flower of
mankind, yea, the Lord of all creatures:  and, ver. 2, declares the
excellence of his spouse, the true church above all other societies,
which are to be considered as thorns.

2:2. As the lily among thorns, so is my love among the daughters.

2:3. As the apple tree among the trees of the woods, so is my beloved
among the sons.  I sat down under his shadow, whom I desired:  and his
fruit was sweet to my palate.

2:4. He brought me into the cellar of wine, he set in order charity in
me.

2:5. Stay me up with flowers, compass me about with apples:  because I
languish with love.

2:6. His left hand is under my head, and his right hand shall embrace
me.

2:7. I adjure you, O ye daughters of Jerusalem, by the roes, and the
harts of the field, that you stir not up, nor make the beloved to
awake, till she please.

2:8. The voice of my beloved, behold he cometh leaping upon the
mountains, skipping over the hills.

The voice of my beloved:  that is, the preaching of the gospel
surmounting difficulties figuratively here expressed by mountains and
little hills.

2:9. My beloved is like a roe, or a young hart.  Behold he standeth
behind our wall, looking through the windows, looking through the
lattices.

2:10. Behold my beloved speaketh to me:  Arise, make haste, my love, my
dove, my beautiful one, and come.

2:11. For winter is now past, the rain is over and gone.

2:12. The flowers have appeared in our land, the time of pruning is
come:  the voice of the turtle is heard in our land:

2:13. The fig tree hath put forth her green figs:  the vines in flower
yield their sweet smell.  Arise, my love, my beautiful one, and come:

2:14. My dove in the clefts of the rock, in the hollow places of the
wall, shew me thy face, let thy voice sound in my ears:  for thy voice
is sweet, and thy face comely.

2:15. Catch us the little foxes that destroy the vines:  for our
vineyard hath flourished.

Catch us the little foxes. . .Christ commands his pastors to catch false
teachers, by holding forth their fallacy and erroneous doctrine, which
like foxes would bite and destroy the vines.

2:16. My beloved to me, and I to him who feedeth among the lilies,

2:17. Till the day break, and the shadows retire.  Return:  be like, my
beloved, to a roe, or to a young hart upon the mountains of Bether.



Canticle of Canticles Chapter 3


The spouse seeks Christ.  The glory of his humanity.

3:1. In my bed by night I sought him whom my soul loveth:  I sought him,
and found him not.

In my bed by night, etc. . .The Gentiles as in the dark, and seeking in
heathen delusion what they could not find, the true God, until Christ
revealed his doctrine to them by his watchmen, (ver. 3,) that is, by
the apostles, and teachers by whom they were converted to the true
faith; and holding that faith firmly, the spouse (the Catholic Church)
declares, ver. 4, That she will not let him go, till she bring him into
her mother's house, etc., that is, till at last, the Jews also shall
find him.

3:2. I will rise, and will go about the city:  in the streets and the
broad ways I will seek him whom my soul loveth:  I sought him, and I
found him not.

3:3. The watchmen who keep the city, found me:  Have you seen him, whom
my soul loveth?

3:4. When I had a little passed by them, I found him whom my soul
loveth:  I held him:  and I will not let him go, till I bring him into my
mother's house, and into the chamber of her that bore me.

3:5. I adjure you, O daughters of Jerusalem, by the roes and the harts
of the fields, that you stir not up, nor awake my beloved, till she
please.

3:6. Who is she that goeth up by the desert, as a pillar of smoke of
aromatical spices, of myrrh, and frankincense, and of all the powders
of the perfumer?

3:7. Behold threescore valiant ones of the most valiant of Israel,
surrounded the bed of Solomon?

3:8. All holding swords, and most expert in war:  every man's sword upon
his thigh, because of fears in the night.

3:9. King Solomon hath made him a litter of the wood of Libanus:

3:10. The pillars thereof he made of silver, the seat of gold, the
going up of purple:  the midst he covered with charity for the daughters
of Jerusalem.

3:11. Go forth, ye daughters of Sion, and see king Solomon in the
diadem, wherewith his mother crowned him in the day of the joy of his
heart.



Canticle of Canticles Chapter 4


Christ sets forth the graces of his spouse:  and declares his love for
her.

4:1. How beautiful art thou, my love, how beautiful art thou! thy eyes
are doves' eyes, besides what is hid within.  Thy hair is as flocks of
goats, which come up from mount Galaad.

How beautiful art thou. . .Christ again praises the beauties of his
church, which through the whole of this chapter are exemplified by a
variety of metaphors, setting forth her purity, her simplicity, and her
stability.

4:2. Thy teeth as flocks of sheep, that are shorn, which come up from
the washing, all with twins, and there is none barren among them.

4:3. Thy lips are as a scarlet lace:  and thy speech sweet.  Thy cheeks
are as a piece of a pomegranate, besides that which lieth hid within.

4:4. Thy neck, is as the tower of David, which is built with bulwarks:
a thousand bucklers hang upon it, all the armour of valiant men.

4:5. Thy two breasts like two young roes that are twins, which feed
among the lilies.

Thy two breasts, etc. . .Mystically to be understood:  the love of God
and the love of our neighbour, which are so united as twins which feed
among the lilies:  that is, the love of God and our neighbour, feeds on
the divine mysteries and the holy sacraments, left by Christ to his
spouse to feed and nourish her children.

4:6. Till the day break, and the shadows retire, I will go to the
mountain of myrrh, and to the hill of frankincense.

4:7. Thou art all fair, O my love, and there is not a spot in thee.

4:8. Come from Libanus, my spouse, come from Libanus, come:  thou shalt
be crowned from the top of Amana, from the top of Sanir and Hermon,
from the dens of the lions, from the mountains of the leopards.

4:9. Thou hast wounded my heart, my sister, my spouse, thou hast
wounded my heart with one of thy eyes, and with one hair of thy neck.

4:10. How beautiful are thy breasts, my sister, my spouse! thy breasts
are more beautiful than wine, and the sweet smell of thy ointments
above all aromatical spices.

4:11. Thy lips, my spouse, are as a dropping honeycomb, honey and milk
are under thy tongue; and the smell of thy garments, as the smell of
frankincense.

4:12. My sister, my spouse, is a garden enclosed, a garden enclosed, a
fountain sealed up.

My sister, etc., a garden enclosed. . .Figuratively the church is
enclosed, containing only the faithful.  A fountain sealed up. . .That
none can drink of its waters, that is, the graces and spiritual
benefits of the holy sacraments, but those who are within its walls.

4:13. Thy plants are a paradise of pomegranates with the fruits of the
orchard.  Cypress with spikenard.

4:14. Spikenard and saffron, sweet cane and cinnamon, with all the
trees of Libanus, myrrh and aloes with all the chief perfumes.

4:15. The fountain of gardens:  the well of living waters, which run
with a strong stream from Libanus.

4:16. Arise, O north wind, and come, O south wind, blow through my
garden, and let the aromatical spices thereof flow.



Canticle of Canticles Chapter 5


Christ calls his spouse:  she languishes with love:  and describes him by
his graces.

5:1. Let my beloved come into his garden, and eat the fruit of his
apple trees.  I am come into my garden, O my sister, my spouse, I have
gathered my myrrh, with my aromatical spices:  I have eaten the
honeycomb with my honey, I have drunk my wine with my milk:  eat, O
friends, and drink, and be inebriated, my dearly beloved.

Let my beloved come into his garden, etc. . .Garden, mystically the
church of Christ, abounding with fruit, that is, the good works of the
elect.

5:2. I sleep, and my heart watcheth:  the voice of my beloved knocking:
Open to me, my sister, my love, my dove, my undefiled:  for my head is
full of dew, and my locks of the drops of the nights.

5:3. I have put off my garment, how shall I put it on?  I have washed my
feet, how shall I defile them?

5:4. My beloved put his hand through the key hole, and my bowels were
moved at his touch.

My beloved put his hand through the key hole, etc. . .The spouse of
Christ, his church, at times as it were penned up by its persecutors,
and in fears, expecting the divine assistance, here signified by his
hand:  and ver. 6, but he had turned aside and was gone, that is, Christ
permitting a further trial of suffering:  and again, ver. 7, the
keepers, etc., signifying the violent and cruel persecutors of the
church taking her veil, despoiling the church of its places of worship
and ornaments for the divine service.

5:5. I arose up to open to my beloved:  my hands dropped with myrrh, and
my fingers were full of the choicest myrrh.

5:6. I opened the bolt of my door to my beloved:  but he had turned
aside, and was gone.  My soul melted when he spoke:  I sought him, and
found him not:  I called, and he did not answer me.

5:7. The keepers that go about the city found me:  they struck me:  and
wounded me:  the keepers of the walls took away my veil from me.

5:8. I adjure you, O daughters of Jerusalem, if you find my beloved,
that you tell him that I languish with love.

5:9. What manner of one is thy beloved of the beloved, O thou most
beautiful among women?  what manner of one is thy beloved of the
beloved, that thou hast so adjured us?

5:10. My beloved is white and ruddy, chosen out of thousands.

My beloved, etc. . .In this and the following verses, the church
mystically describes Christ to those who know him not, that is, to
infidels in order to convert them to the true faith.

5:11. His head is as the finest gold:  his locks as branches of palm
trees, black as a raven.

5:12. His eyes as doves upon brooks of waters, which are washed with
milk, and sit beside the plentiful streams.

5:13. His cheeks are as beds of aromatical spices set by the perfumers.
His lips are as lilies dropping choice myrrh.

5:14. His hands are turned and as of gold, full of hyacinths.  His belly
as of ivory, set with sapphires.

5:15. His legs as pillars of marble, that are set upon bases of gold.
His form as of Libanus, excellent as the cedars.

5:16. His throat most sweet, and he is all lovely:  such is my beloved,
and he is my friend, O ye daughters of Jerusalem.

5:17. Whither is thy beloved gone, O thou most beautiful among women?
whither is thy beloved turned aside, and we will seek him with thee?



Canticle of Canticles Chapter 6


The spouse of Christ is but one:  she is fair and terrible.

6:1. My beloved is gone down into his garden, to the bed of aromatical
spices, to feed in the gardens, and to gather lilies.

My beloved is gone down into his garden. . .Christ, pleased with the
good works of his holy and devout servants labouring in his garden, is
always present with them:  but the words is gone down, are to be
understood, that after trying his Church by permitting persecution, he
comes to her assistance and she rejoices at his coming.

6:2. I to my beloved, and my beloved to me, who feedeth among the
lilies.

6:3. Thou art beautiful, O my love, sweet and comely as Jerusalem
terrible as an army set in array.

6:4. Turn away thy eyes from me, for they have made me flee away.  Thy
hair is as a flock of goats, that appear from Galaad.

6:5. Thy teeth as a flock of sheep, which come up from the washing, all
with twins, and there is none barren among them.

6:6. Thy cheeks are as the bark of a pomegranate, beside what is hidden
within thee.

6:7. There are threescore queens, and fourscore concubines, and young
maidens without number.

6:8. One is my dove, my perfect one is but one, she is the only one of
her mother, the chosen of her that bore her.  The daughters saw her, and
declared her most blessed:  the queens and concubines, and they praised
her.

One is my dove, etc. . .That is, my church is one, and she only is
perfect and blessed.

6:9. Who is she that cometh forth as the morning rising, fair as the
moon, bright as the sun, terrible as an army set in array?

Who is she, etc. . .Here is a beautiful metaphor describing the church
from the beginning.  As, the morning rising, signifying the church
before the written law; fair as the moon, shewing her under the light
of the gospel:  and terrible as an army, the power of Christ's church
against its enemies.

6:10. I went down into the garden of nuts, to see the fruits of the
valleys, and to look if the vineyard had flourished, and the
pomegranates budded.

6:11. I knew not:  my soul troubled me for the chariots of Aminadab.

6:12. Return, return, O Sulamitess:  return, return that we may behold
thee.



Canticle of Canticles Chapter 7


A further description of the graces of the church the spouse of Christ.

7:1. What shalt thou see in the Sulamitess but the companies of camps?
How beautiful are thy steps in shoes, O prince's daughter!  The joints
of thy thighs are like jewels, that are made by the hand of a skilful
workman.

How beautiful are thy steps, etc. . .By these metaphors are signified
the power and mission of the church in propagating the true faith.

7:2. Thy navel is like a round bowl never wanting cups.  Thy belly is
like a heap of wheat, set about with lilies.

7:3. Thy two breasts are like two young roes that are twins.

7:4. Thy neck as a tower of ivory.  Thy eyes like the fishpools in
Hesebon, which are in the gate of the daughter of the multitude.  Thy
nose is as the tower of Libanus, that looketh toward Damascus.

7:5. Thy head is like Carmel:  and the hairs of thy head as the purple
of the king bound in the channels.

Thy head is like Carmel. . .Christ, the invisible head of his church, is
here signified.

7:6. How beautiful art thou, and how comely, my dearest, in delights!

7:7. Thy stature is like to a palm tree, and thy breasts to clusters of
grapes.

7:8. I said:  I will go up into the palm tree, and will take hold of the
fruit thereof:  and thy breasts shall be as the clusters of the vine:
and the odour of thy mouth like apples.

7:9. Thy throat like the best wine, worthy for my beloved to drink, and
for his lips and his teeth to ruminate.

7:10. I to my beloved, and his turning is towards me.

7:11. Come, my beloved, let us go forth into the field, let us abide in
the villages.

7:12. Let us get up early to the vineyards, let us see if the vineyard
flourish, if the flowers be ready to bring forth fruits, if the
pomegranates flourish:  there will I give thee my breasts.

7:13. The mandrakes give a smell.  In our gates are all fruits:  the new
and the old, my beloved, I have kept for thee.



Canticle of Canticles Chapter 8


The love of the church to Christ:  his love to her.

8:1. Who shall give thee to me for my brother, sucking the breasts of
my mother, that I may find thee without, and kiss thee, and now no man
may despise me?

8:2. I will take hold of thee, and bring thee into my mother's house:
there thou shalt teach me, and I will give thee a cup of spiced wine
and new wine of my pomegranates.

8:3. His left hand under my head, and his right hand shall embrace me.

His left hand, etc. . .Words of the church to Christ.  His left hand,
signifying the Old Testament, and his right hand, the New.

8:4. I adjure you, O daughters of Jerusalem, that you stir not up, nor
awake my love till she please.

8:5. Who is this that cometh up from the desert, flowing with delights,
leaning upon her beloved?  Under the apple tree I raised thee up:  there
thy mother was corrupted, there she was defloured that bore thee.

Who is this, etc. . .The angels with admiration behold the Gentiles
converted to the faith:  coming up from the desert, that is, coming from
heathenism and false worship:  flowing with delights, that is, abounding
with good works which are pleasing to God:  leaning on her beloved, on
the promise of Christ to his Church, that the gates of hell should not
prevail against it; and supported by his grace conferred by the
sacraments.  Under the apple tree I raised thee up; that is, that Christ
redeemed the Gentiles at the foot of the cross, where the synagogue of
the Jews (the mother church) was corrupted by their denying him, and
crucifying him.

8:6. Put me as a seal upon thy heart, as a seal upon thy arm, for love
is strong as death, jealousy as hard as hell, the lamps thereof are
fire and flames.

8:7. Many waters cannot quench charity, neither can the floods drown
it:  if a man should give all the substance of his house for love, he
shall despise it as nothing.

8:8. Our sister is little, and hath no breasts.  What shall we do to our
sister in the day when she is to be spoken to?

Our sister is little, etc. . .Mystically signifies the Jews, who are to
be spoken to:  that is, converted towards the end of the world:  and then
shall become a wall, that is, a part of the building, the church of
Christ.

8:9. If she be a wall:  let us build upon it bulwarks of silver:  if she
be a door, let us join it together with boards of cedar.

8:10. I am a wall:  and my breasts are as a tower since I am become in
his presence as one finding peace.

8:11. The peaceable had a vineyard, in that which hath people:  he let
out the same to keepers, every man bringeth for the fruit thereof a
thousand pieces of silver.

8:12. My vineyard is before me.  A thousand are for thee, the peaceable,
and two hundred for them that keep the fruit thereof.

8:13. Thou that dwellest in the gardens, the friends hearken:  make me
hear thy voice.

8:14. Flee away, O my beloved, and be like to the roe, and to the young
hart upon the mountains of aromatical spices.




THE BOOK OF WISDOM



This Book is so called, because it treats of the excellence of WISDOM,
the means to obtain it, and the happy fruits it produces.  It is written
in the person of Solomon, and contains his sentiments.  But it is
uncertain who was the writer.  It abounds with instructions and
exhortations to kings and all magistrates to minister justice in the
commonwealth, teaching all kinds of virtues under the general names of
justice and wisdom.  It contains also many prophecies of Christ's
coming, passion, resurrection, and other Christian mysteries.  The whole
may be divided into three parts.  In the first six chapters, the author
admonishes all superiors to love and exercise justice and wisdom.  In
the next three, he teacheth that wisdom proceedeth only from God, and
is procured by prayer and a good life.  In the other ten chapters, he
sheweth the excellent effects and utility of wisdom and justice.



Wisdom Chapter 1


An exhortation to seek God sincerely, who cannot be deceived, and
desireth not our death.

1:1. Love justice, you that are the judges of the earth.  Think of the
Lord in goodness, and seek him in simplicity of heart:

1:2. For he is found by them that tempt him not:  and he sheweth himself
to them that have faith in him.

1:3. For perverse thoughts separate from God:  and his power, when it is
tried, reproveth the unwise:

1:4. For wisdom will not enter into a malicious soul, nor dwell in a
body subject to sins.

1:5. For the Holy Spirit of discipline will flee from the deceitful,
and will withdraw himself from thoughts that are without understanding,
and he shall not abide when iniquity cometh in.

1:6. For the spirit of wisdom is benevolent, and will not acquit the
evil speaker from his lips:  for God is witness of his reins, and he is
a true searcher of his heart, and a hearer of his tongue.

1:7. For the Spirit of the Lord hath filled the whole world:  and that
which containeth all things, hath knowledge of the voice.

1:8. Therefore he that speaketh unjust things, cannot be hid, neither
shall the chastising judgment pass him by.

1:9. For inquisition shall be made into the thoughts of the ungodly,
and the hearing of his words shall come to God, to the chastising of
his iniquities.

1:10. For the ear of jealousy heareth all things, and the tumult of
murmuring shall not be hid.

1:11. Keep yourselves, therefore, from murmuring, which profiteth
nothing, and refrain your tongue from detraction, for an obscure speech
shall not go for nought:  and the mouth that belieth, killeth the soul.

1:12. Seek not death in the error of your life, neither procure ye
destruction by the works of your hands.

1:13. For God made not death, neither hath he pleasure in the
destruction of the living.

1:14. For he created all things that they might be:  and he made the
nations of the earth for health:  and there is no poison of destruction
in them, nor kingdom of hell upon the earth.

1:15. For justice is perpetual and immortal.

1:16. But the wicked with works and words have called it to them:  and
esteeming it a friend, have fallen away and have made a covenant with
it:  because they are worthy to be of the part thereof.



Wisdom Chapter 2


The vain reasonings of the wicked:  their persecuting the just,
especially the Son of God.

2:1. For they have said, reasoning with themselves, but not right:  The
time of our life is short and tedious, and in the end of a man there is
no remedy, and no man hath been known to have returned from hell:

2:2. For we are born of nothing, and after this we shall be as if we
had not been:  for the breath in our nostrils is smoke:  and speech a
spark to move our heart,

2:3. Which being put out, our body shall be ashes, and our spirit shall
be poured abroad as soft air, and our life shall pass away as the trace
of a cloud, and shall be dispersed as a mist, which is driven away by
the beams of the sun, and overpowered with the heat thereof:

2:4. And our name in time shall be forgotten, and no man shall have any
remembrance of our works.

2:5. For our time is as the passing of a shadow, and there is no going
back of our end:  for it is fast sealed, and no man returneth:

2:6. Come, therefore, and let us enjoy the good things that are
present, and let us speedily use the creatures as in youth.

2:7. Let us fill ourselves with costly wine, and ointments:  and let not
the flower of the time pass by us.

2:8. Let us crown ourselves with roses, before they be withered:  let no
meadow escape our riot.

2:9. Let none of us go without his part in luxury:  let us every where
leave tokens of joy:  for this is our portion, and this our lot.

2:10. Let us oppress the poor just man, and not spare the widow, nor
honour the ancient grey hairs of the aged.

2:11. But let our strength be the law of justice:  for that which is
feeble is found to be nothing worth.

2:12. Let us, therefore, lie in wait for the just, because he is not
for our turn, and he is contrary to our doings, and upbraideth us with
transgressions of the law, and divulgeth against us the sins of our way
of life.

2:13. He boasteth that he hath the knowledge of God, and calleth
himself the son of God.

2:14. He is become a censurer of our thoughts.

2:15. He is grievous unto us, even to behold:  for his life is not like
other men's, and his ways are very different.

2:16. We are esteemed by him as triflers, and he abstaineth from our
ways as from filthiness, and he preferreth the latter end of the just,
and glorieth that he hath God for his father.

2:17. Let us see then if his words be true, and let us prove what shall
happen to him, and we shall know what his end shall be.

2:18. For if he be the true son of God, he will defend him, and will
deliver him from the hands of his enemies.

2:19. Let us examine him by outrages and tortures, that we may know his
meekness, and try his patience.

2:20. Let us condemn him to a most shameful death:  for there shall be
respect had unto him by his words.

2:21. These things they thought, and were deceived:  for their own
malice blinded them.

2:22. And they knew not the secrets of God, nor hoped for the wages of
justice, nor esteemed the honour of holy souls.

2:23. For God created man incorruptible, and to the image of his own
likeness he made him.

2:24. But by the envy of the devil, death came into the world:

2:25. And they follow him that are of his side.



Wisdom Chapter 3


The happiness of the just:  and the unhappiness of the wicked.

3:1. But the souls of the just are in the hand of God, and the torment
of death shall not touch them.

3:2. In the sight of the unwise they seemed to die:  and their departure
was taken for misery:

3:3. And their going away from us, for utter destruction:  but they are
in peace.

3:4. And though in the sight of men they suffered torments, their hope
is full of immortality.

3:5. Afflicted in few things, in many they shall be well rewarded:
because God hath tried them, and found them worthy of himself.

3:6. As gold in the furnace, he hath proved them, and as a victim of a
holocaust, he hath received them, and in time there shall be respect
had to them.

3:7. The just shall shine, and shall run to and fro like sparks among
the reeds.

3:8. They shall judge nations, and rule over people, and their Lord
shall reign for ever.

3:9. They that trust in him shall understand the truth:  and they that
are faithful in love, shall rest in him:  for grace and peace are to his
elect.

3:10. But the wicked shall be punished according to their own devices:
who have neglected the just, and have revolted from the Lord.

3:11. For he that rejecteth wisdom, and discipline, is unhappy:  and
their hope is vain, and their labours without fruit, and their works
unprofitable.

3:12. Their wives are foolish, and their children wicked.

3:13. Their offspring is cursed, for happy is the barren:  and the
undefiled, that hath not known bed in sin, she shall have fruit in the
visitation of holy souls.

3:14. And the eunuch, that hath not wrought iniquity with his hands,
nor thought wicked things against God for the precious gift of faith
shall be given to him, and a most acceptable lot in the temple of God.

3:15. For the fruit of good labours is glorious, and the root of wisdom
never faileth.

3:16. But the children of adulterers shall not come to perfection, and
the seed of the unlawful bed shall be rooted out.

3:17. And if they live long, they shall be nothing regarded, and their
last old age shall be without honour.

3:18. And if they die quickly, they shall have no hope, nor speech of
comfort in the day of trial.

3:19. For dreadful are the ends of a wicked race.



Wisdom Chapter 4


The difference between the chaste and the adulterous generations:  and
between the death of the just and the wicked.

4:1. How beautiful is the chaste generation with glory:  for the memory
thereof is immortal:  because it is known both with God and with men.

4:2. When it is present, they imitate it:  and they desire it, when it
hath withdrawn itself, and it triumpheth crowned for ever, winning the
reward of undefiled conflicts.

4:3. But the multiplied brood of the wicked shall not thrive, and
bastard slips shall not take deep root, nor any fast foundation.

4:4. And if they flourish in branches for a time, yet standing not
fast, they shall be shaken with the wind, and through the force of
winds they shall be rooted out.

4:5. For the branches not being perfect, shall be broken, and their
fruits shall be unprofitable, and sour to eat, and fit for nothing.

4:6. For the children that are born of unlawful beds, are witnesses of
wickedness against their parents in their trial.

4:7. But the just man, if he be prevented with death, shall be in rest.

4:8. For venerable old age is not that of long time, nor counted by the
number of years:  but the understanding of a man is grey hairs.

4:9. And a spotless life is old age.

4:10. He pleased God, and was beloved, and living among sinners, he was
translated.

4:11. He was taken away, lest wickedness should alter his
understanding, or deceit beguile his soul.

4:12. For the bewitching of vanity obscureth good things, and the
wandering of concupiscence overturneth the innocent mind.

4:13. Being made perfect in a short space, he fulfilled a long time.

4:14. For his soul pleased God:  therefore he hastened to bring him out
of the midst of iniquities:  but the people see this, and understand
not, nor lay up such things in their hearts:

4:15. That the grace of God, and his mercy is with his saints, and that
he hath respect to his chosen.

4:16. But the just that is dead, condemneth the wicked that are living,
and youth soon ended, the long life of the unjust.

4:17. For they shall see the end of the wise man, and it shall not
understand what God hath designed for him, and why the Lord hath set
him in safety.

4:18. They shall see him, and shall despise him:  but the Lord shall
laugh them to scorn.

4:19. And they shall fall after this without honour, and be a reproach
among the dead for ever:  for he shall burst them puffed up and
speechless, and shall shake them from the foundations, and they shall
be utterly laid waste:  they shall be in sorrow, and their memory shall
perish.

4:20. They shall come with fear at the thought of their sins, and their
iniquities shall stand against them to convict them.



Wisdom Chapter 5


The fruitless repentance of the wicked in another world:  the reward of
the just.

5:1. Then shall the just stand with great constancy against those that
have afflicted them, and taken away their labours.

5:2. These seeing it, shall be troubled with terrible fear, and shall
be amazed at the suddenness of their unexpected salvation,

5:3. Saying within themselves, repenting, and groaning for anguish of
spirit:  These are they, whom we had sometime in derision, and for a
parable of reproach.

5:4. We fools esteemed their life madness, and their end without
honour.

5:5. Behold, how they are numbered among the children of God, and their
lot is among the saints.

5:6. Therefore we have erred from the way of truth, and the light of
justice hath not shined unto us, and the sun of understanding hath not
risen upon us.

5:7. We wearied ourselves in the way of iniquity and destruction, and
have walked through hard ways, but the way of the Lord we have not
known.

5:8. What hath pride profited us?  or what advantage hath the boasting
of riches brought us?

5:9. All those things are passed away like a shadow, and like a post
that runneth on,

5:10. And as a ship, that passeth through the waves:  whereof when it is
gone by, the trace cannot be found.  nor the path of its keel in the
waters:

5:11. Or as when a bird flieth through the air, of the passage of which
no mark can be found, but only the sound of the wings beating the light
air, and parting it by the force of her flight:  she moved her wings,
and hath flown through, and there is no mark found afterwards of her
way:

5:12. Or as when an arrow is shot at a mark, the divided air quickly
cometh together again, so that the passage thereof is not known:

5:13. So we also being born, forthwith ceased to be:  and have been able
to shew no mark of virtue:  but are consumed in our wickedness.

5:14. Such things as these the sinners said in hell:

5:15. For the hope of the wicked is as dust, which is blown away with
the wind, and as a thin froth which is dispersed by the storm:  and a
smoke that is scattered abroad by the wind:  and as the remembrance of a
guest of one day that passeth by.

5:16. But the just shall live for evermore:  and their reward is with
the Lord, and the care of them with the most High.

5:17. Therefore shall they receive a kingdom of glory, and a crown of
beauty at the hand of the Lord:  for with his right hand he will cover
them, and with his holy arm he will defend them.

5:18. And his zeal will take armour, and he will arm the creature for
the revenge of his enemies.

5:19. He will put on justice as a breastplate, and will take true
judgment instead of a helmet:

5:20. He will take equity for an invincible shield:

5:21. And he will sharpen his severe wrath for a spear, and the whole
world shall fight with him against the unwise.

5:22. Then shafts of lightning shall go directly from the clouds, as
from a bow well bent, they shall be shot out, and shall fly to the
mark.

5:23. And thick hail shall be cast upon them from the stone casting
wrath:  the water of the sea shall rage against them, and the rivers
shall run together in a terrible manner.

5:24. A mighty wind shall stand up against them, and as a whirlwind
shall divide them:  and their iniquity shall bring all the earth to a
desert, and wickedness shall overthrow the thrones of the mighty.



Wisdom Chapter 6


An address to princes to seek after wisdom:  she is easily found by
those that seek her.

6:1. Wisdom is better than strength:  and a wise man is better than a
strong man.

6:2. Hear, therefore, ye kings, and understand, learn ye that are
judges of the ends of the earth.

6:3. Give ear, you that rule the people, and that please yourselves in
multitudes of nations:

6:4. For power is given you by the Lord, and strength by the most High,
who will examine your works:  and search out your thoughts:

6:6. Because being ministers of his kingdom, you have not judged
rightly, nor kept the law of justice, nor walked according to the will
of God.

6:6. Horribly and speedily will he appear to you:  for a most severe
judgment shall be for them that bear rule.

6:7. For to him that is little, mercy is granted:  but the mighty shall
be mightily tormented.

6:8. For God will not except any man's person, neither will he stand in
awe of any man's greatness:  for he made the little and the great, and
he hath equally care of all.

6:9. But a greater punishment is ready for the more mighty.

6:10. To you, therefore, O kings, are these my words, that you may
learn wisdom, and not fall from it.

6:11. For they that have kept just things justly, shall be justified:
and they that have learned these things, shall find what to answer.

6:12. Covet ye, therefore, my words, and love them, and you shall have
instruction.

6:13. Wisdom is glorious, and never fadeth away, and is easily seen by
them that love her, and is found by them that seek her.

6:14. She preventeth them that covet her, so that she first sheweth
herself unto them.

6:15. He that awaketh early to seek her, shall not labour:  for he shall
find her sitting at his door.

6:16. To think, therefore, upon her, is perfect understanding:  and he
that watcheth for her, shall quickly be secure.

6:17. For she goeth about seeking such as are worthy of her, and she
sheweth herself to them cheerfully in the ways, and meeteth them with
all providence.

6:18. For the beginning of her is the most true desire of discipline.

6:19. And the care of discipline is love:  and love is the keeping of
her laws:  and the keeping of her laws is the firm foundation of
incorruption:

6:20. And incorruption bringeth near to God.

6:21. Therefore the desire of wisdom bringeth to the everlasting
kingdom.

6:22. If then your delight be in thrones, and sceptres, O ye kings of
the people, love wisdom, that you may reign for ever.

6:23. Love the light of wisdom, all ye that bear rule over peoples.

6:24. Now what wisdom is, and what was her origin, I will declare:  and
I will not hide from you the mysteries of God, but will seek her out
from the beginning of her birth, and bring the knowledge of her to
light, and will not pass over the truth:

6:25. Neither will I go with consuming envy:  for such a man shall not
be partaker of wisdom.

6:26. Now the multitude of the wise is the welfare of the whole world:
and a wise king is the upholding of the people.

6:27. Receive, therefore, instruction by my words, and it shall be
profitable to you.



Wisdom Chapter 7


The excellence of wisdom:  how she is to be found.

7:1. I myself am a mortal man, like all others, and of the race of him,
that was first made of the earth, and in the womb of my mother I was
fashioned to be flesh.

7:2. In the time of ten months I was compacted in blood, of the seed of
man, and the pleasure of sleep concurring.

7:3. And being born, I drew in the common air, and fell upon the earth,
that is made alike, and the first voice which I uttered was crying, as
all others do.

7:4. I was nursed in swaddling clothes, and with great cares.

7:5. For none of the kings had any other beginning of birth.

7:6. For all men have one entrance into life, and the like going out.

7:7. Wherefore I wished, and understanding was given me:  and I called
upon God, and the spirit of wisdom came upon me:

7:8. And I preferred her before kingdoms and thrones, and esteemed
riches nothing in comparison of her.

7:9. Neither did I compare unto her any precious stone:  for all gold,
in comparison of her, is as a little sand; and silver, in respect to
her, shall be counted as clay.

7:10. I loved her above health and beauty, and chose to have her
instead of light:  for her light cannot be put out.

7:11. Now all good things came to me together with her, and innumerable
riches through her hands,

7:12. And I rejoiced in all these:  for this wisdom went before me, and
I knew not that she was the mother of them all.

7:13. Which I have learned without guile, and communicate without envy,
and her riches I hide not.

7:14. For she is an infinite treasure to men:  which they that use,
become the friends of God, being commended for the gifts of discipline.

7:15. And God hath given to me to speak as I would, and to conceive
thoughts worthy of those things that are given me:  because he is the
guide of wisdom, and the director of the wise:

7:16. For in his hand are both we, and our words, and all wisdom, and
the knowledge and skill of works.

7:17. For he hath given me the true knowledge of the things that are:
to know the disposition of the whole world, and the virtues of the
elements,

7:18. The beginning, and ending, and midst of the times, the
alterations of their courses, and the changes of seasons,

7:19. The revolutions of the year, and the dispositions of the stars,

7:20. The natures of living creatures, and rage of wild beasts, the
force of winds, and reasonings of men, the diversities of plants, and
the virtues of roots,

7:21. And all such things as are hid, and not foreseen, I have learned:
for wisdom, which is the worker of all things, taught me.

7:22. For in her is the spirit of understanding; holy, one, manifold,
subtile, eloquent, active, undefiled, sure, sweet, loving that which is
good, quick, which nothing hindereth, beneficent,

7:23. Gentle, kind, steadfast, assured, secure, having all power,
overseeing all things, and containing all spirits:  intelligible, pure,
subtile:

7:24. For wisdom is more active than all active things; and reacheth
everywhere, by reason of her purity.

7:25. For she is a vapour of the power of God, and a certain pure
emmanation of the glory of the Almighty God:  and therefore no defiled
thing cometh into her.

7:26. For she is the brightness of eternal light, and the unspotted
mirror of God's majesty, and the image of his goodness.

7:27. And being but one, she can do all things:  and remaining in
herself the same, she reneweth all things, and through nations
conveyeth herself into holy souls, she maketh the friends of God and
prophets.

7:28. For God loveth none but him that dwelleth with wisdom.

7:29. For she is more beautiful than the sun, and above all the order
of the stars:  being compared with the light, she is found before it.

7:30. For after this cometh night, but no evil can overcome wisdom.



Wisdom Chapter 8


Further praises of wisdom:  and her fruits.

8:1. She reacheth, therefore, from end to end mightily, and ordereth
all things sweetly.

8:2. Her have I loved, and have sought her out from my youth, and have
desired to take for my spouse, and I became a lover of her beauty.

8:3. She glorifieth her nobility by being conversant with God:  yea, and
the Lord of all things hath loved her.

8:4. For it is she that teacheth the knowledge of God and is the
chooser of his works.

8:5. And if riches be desired in life, what is richer than wisdom,
which maketh all things?

8:6. And if sense do work:  who is a more artful worker than she of
those things that are?

8:7. And if a man love justice:  her labours have great virtues:  for she
teacheth temperance, and prudence, and justice, and fortitude, which
are such things as men can have nothing more profitable in life.

8:8. And if a man desire much knowledge:  she knoweth things past, and
judgeth of things to come:  she knoweth the subtilties of speeches, and
the solutions of arguments:  she knoweth signs and wonders before they
be done, and the events of times and ages.

8:9. I purposed, therefore, to take her to me to live with me:  knowing
that she will communicate to me of her good things, and will be a
comfort in my cares and grief.

8:10. For her sake I shall have glory among the multitude, and honour
with the ancients, though I be young:

8:11. And I shall be found of a quick conceit in judgment, and shall be
admired in the sight of the mighty, and the faces of princes shall
wonder at me.

8:12. They shall wait for me when I hold my peace, and they shall look
upon me when I speak; and if I talk much, they shall lay their hands on
their mouth.

8:13. Moreover, by the means of her I shall have immortality:  and shall
leave behind me an everlasting memory to them that come after me.

8:14. I shall set the people in order:  and nations shall be subject to
me.

8:15. Terrible kings hearing, shall be afraid of me:  among the
multitude I shall be found good, and valiant in war.

8:16. When I go into my house, I shall repose myself with her:  for her
conversation hath no bitterness, nor her company any tediousness, but
joy and gladness.

8:17. Thinking these things with myself, and pondering them in my
heart, that to be allied to wisdom is immortality,

8:18. And that there is great delight in her friendship, and
inexhaustible riches in the works of her hands, and in the exercise of
conference with her, wisdom, and glory in the communication of her
words:  I went about seeking, that I might take her to myself.

8:19. And I was a witty child, and had received a good soul.

8:20. And whereas I was more good, I came to a body undefiled.

8:21. And as I knew that I could not otherwise be continent, except God
gave it, and this also was a point of wisdom, to know whose gift it
was, I went to the Lord, and besought him, and said with my whole
heart:



Wisdom Chapter 9


Solomon's prayer for wisdom.

9:1. God of my fathers, and Lord of mercy, who hast made all things
with thy word,

9:2. And by thy wisdom hast appointed man, that he should have dominion
over the creature that was made by thee,

9:3. That he should order the world according to equity and justice,
and execute justice with an upright heart:

9:4. Give me wisdom, that sitteth by thy throne, and cast me not off
from among thy children:

9:5. For I am thy servant, and the son of thy handmaid, a weak man, and
of short time, and falling short of the understanding of judgment and
laws.

9:6. For if one be perfect among the children of men, yet if thy wisdom
be not with him, he shall be nothing regarded.

9:7. Thou hast chosen me to be king of thy people, and a judge of thy
sons and daughters:

9:8. And hast commanded me to build a temple on thy holy mount, and an
altar in the city of thy dwelling place, a resemblance of thy holy
tabernacle, which thou hast prepared from the beginning:

9:9. And thy wisdom with thee, which knoweth thy works, which then also
was present when thou madest the world, and knew what was agreeable to
thy eyes, and what was right in thy commandments.

9:10. Send her out of thy holy heaven, and from the throne of thy
majesty, that she may be with me, and may labour with me, that I may
know what is acceptable with thee:

9:11. For she knoweth and understandeth all things, and shall lead me
soberly in my works, and shall preserve me by her power.

9:12. So shall my works be acceptable, and I shall govern thy people
justly, and shall be worthy of the throne of my father.

9:13. For who among men is he that can know the counsel of God?  or who
can think what the will of God is?

9:14. For the thoughts of mortal men are fearful, and our counsels
uncertain.

9:15. For the corruptible body is a load upon the soul, and the earthly
habitation presseth down the mind that museth upon many things.

9:16. And hardly do we guess aright at things that are upon earth:  and
with labour do we find the things that are before us.  But the things
that are in heaven, who shall search out?

9:17. And who shall know thy thought, except thou give wisdom, and send
thy holy Spirit from above:

9:18. And so the ways of them that are upon earth may be corrected, and
men may learn the things that please thee?

9:19. For by wisdom they were healed, whosoever have pleased thee, O
Lord, from the beginning.



Wisdom Chapter 10


What wisdom did for Adam, Noe, Abraham, Lot, Jacob, Joseph, and the
people of Israel.

10:1. She preserved him, that was first formed by God, the father of
the world, when he was created alone,

10:2. And she brought him out of his sin, and gave him power to govern
all things.

10:3. But when the unjust went away from her in his anger, he perished
by the fury wherewith he murdered his brother.

The unjust. . .Cain.

10:4. For whose cause, when water destroyed the earth, wisdom healed it
again, directing the course of the just by contemptible wood.

For whose cause. . .Viz., for the wickedness of the race of Cain.--Ibid.
The just. . .Noe.

10:5. Moreover, when the nations had conspired together to consent to
wickedness, she knew the just, and preserved him without blame to God,
and kept him strong against the compassion for his son.

She knew the just. . .She found out and approved Abraham.  Ibid.
And kept him strong, etc. . .Gave him strength to stand firm against
the efforts of his natural tenderness, when he was ordered to sacrifice
his son.

10:6. She delivered the just man, who fled from the wicked that were
perishing, when the fire came down upon Pentapolis:

The just man. . .Lot.--Ibid.  Pentapolis. . .The land of the five cities,
Sodom, Gomorrha, etc.

10:7. Whose land, for a testimony of their wickedness, is desolate, and
smoketh to this day, and the trees bear fruits that ripen not, and a
standing pillar of salt is a monument of an incredulous soul.

10:8. For regarding not wisdom, they did not only slip in this, that
they were ignorant of good things; but they left also unto men a
memorial of their folly, so that in the things in which they sinned,
they could not so much as lie hid.

10:9. But wisdom hath delivered from sorrow them that attend upon her.

10:10. She conducted the just, when he fled from his brother's wrath,
through the right ways, and shewed him the kingdom of God, and gave him
the knowledge of the holy things, made him honourable in his labours,
and accomplished his labours.

The just. . .Jacob.

10:11. In the deceit of them that overreached him, she stood by him,
and made him honourable.

10:12. She kept him safe from his enemies, and she defended him from
seducers, and gave him a strong conflict, that he might overcome, and
know that wisdom is mightier than all.

Conflict. . .Viz., with the angel.

10:13. She forsook not the just when he was sold, but delivered him
from sinners:  she went down with him into the pit.

The just when he was sold. . .Viz., Joseph.

10:14. And in bands she left him not, till she brought him the sceptre
of the kingdom, and power against those that oppressed him:  and shewed
them to be liars that had accused him, and gave him everlasting glory.

10:15. She delivered the just people, and blameless seed, from the
nations that oppressed them.

10:16. She entered into the soul of the servant of God and stood
against dreadful kings in wonders and signs.

The servant of God. . .Viz., Moses.

10:17. And she rendered to the just the wages of their labours, and
conducted them in a wonderful way:  and she was to them for a covert by
day, and for the light of stars by night:

10:18. And she brought them through the Red Sea, and carried them over
through a great water.

10:19. But their enemies she drowned in the sea, and from the depth of
hell she brought them out.  Therefore the just took the spoils of the
wicked.

10:20. And they sung to thy holy name, O Lord, and they praised with
one accord thy victorious hand.

10:21. For wisdom opened the mouth of the dumb, and made the tongues of
infants eloquent.



Wisdom Chapter 11


Other benefits of wisdom to the people of God.

11:1. She prospered their works in the hands of the holy prophet.

The holy prophet. . .Moses.

11:2. They went through wildernesses that were not inhabited, and in
desert places they pitched their tents.

11:3. They stood against their enemies, and revenged themselves of
their adversaries.

Their enemies. . .The Amalecites.

11:4. They were thirsty, and they called upon thee, and water was given
them out of the high rock, and a refreshment of their thirst out of the
hard stone.

11:5. For by what things their enemies were punished, when their drink
failed them, while the children of Israel abounded therewith, and
rejoiced:

By what things, etc. . .The meaning is, that God, who wrought a miracle
to punish the Egyptians by thirst, when he turned all their waters into
blood, (at which time the Israelites, who were exempt from those
plagues, had plenty of water,) wrought another miracle in favour of his
own people in their thirst, by giving them water out of the rock.

11:6. By the same things they in their need were benefited.

11:7. For instead of a fountain of an ever running river, thou gavest
human blood to the unjust.

11:8. And whilst they were diminished for a manifest reproof of their
murdering the infants, thou gavest to thine abundant water unlooked
for:

11:9. Shewing by the thirst that was then, how thou didst exalt thine,
and didst kill their adversaries.

11:10. For when they were tried, and chastised with mercy, they knew
how the wicked were judged with wrath, and tormented.

11:11. For thou didst admonish and try them as a father:  but the
others, as a severe king, thou didst examine and condemn.

11:12. For whether absent or present, they were tormented alike.

11:13. For a double affliction came upon them, and a groaning for the
remembrance of things past.

11:14. For when they heard that by their punishments the others were
benefited, they remembered the Lord, wondering at the end of what was
come to pass.

By their punishments, etc. . .That is, that the Israelites had been
benefited and miraculously favoured in the same kind, in which they had
been punished.

11:15. For whom they scorned before, when he was thrown out at the time
of his being wickedly exposed to perish, him they admired in the end,
when they saw the event:  their thirsting being unlike to that of the
just.

11:16. But for the foolish devices of their iniquity, because some
being deceived worshipped dumb serpents and worthless beasts, thou
didst send upon them a multitude of dumb beasts for vengeance:

Dumb beasts. . .Viz., frogs, sciniphs, flies, and locusts.

11:17. That they might know that by what things a man sinneth, by the
same also he is tormented.

11:18. For thy almighty hand, which made the world of matter without
form, was not unable to send upon them a multitude of bears, or fierce
lions,

11:19. Or unknown beasts of a new kind, full of rage; either breathing
out a fiery vapour, or sending forth a stinking smoke, or shooting
horrible sparks out of their eyes:

11:20. Whereof not only the hurt might be able to destroy them, but
also the very sight might kill them through fear.

11:21. Yea, and without these, they might have been slain with one
blast, persecuted by their own deeds, and scattered by the breath of
thy power:  but thou hast ordered all things in measure, and number, and
weight.

11:22. For great power always belonged to thee alone:  and who shall
resist the strength of thy arm?

11:23. For the whole world before thee is as the least grain of the
balance, and as a drop of the morning dew, that falleth down upon tho
earth.

11:24. But thou hast mercy upon all, because thou canst do all things,
and overlookest the sins of men for the sake of repentance.

11:25. For thou lovest all things that are, and hatest none of the
things which thou hast made:  for thou didst not appoint, or make any
thing hating it.

11:26. And how could any thing endure, if thou wouldst not?  or be
preserved, if not called by thee?

11:27. But thou sparest all:  because they are thine, O Lord, who lovest
souls.



Wisdom Chapter 12


God's wisdom and mercy in his proceedings with the Chanaanites.

12:1. O how good and sweet is thy Spirit, O Lord, in all things!

12:2. And therefore thou chastisest them that err, by little and
little:  and admonishest them, and speakest to them, concerning the
things wherein they offend:  that leaving their wickedness, they may
believe in thee, O Lord.

12:3. For those ancient inhabitants of thy holy land, whom thou didst
abhor,

12:4. Because they did works hateful to thee by their sorceries, and
wicked sacrifices,

12:5. And those merciless murderers of their own children, and eaters
of men's bowels, and devourers of blood from the midst of thy
consecration,

From the midst of thy consecration. . .Literally, sacrament.  That is,
the land sacred to thee, in which thy temple was to be established, and
man's redemption to be wrought.

12:6. And those parents sacrificing with their own hands helpless
souls, it was thy will to destroy by the hands of our parents,

12:7. That the land which of all is most dear to thee, might receive a
worthy colony of the children of God.

12:8. Yet even those thou sparedst as men, and didst send wasps
forerunners of thy host, to destroy them by little and little.

12:9. Not that thou wast unable to bring the wicked under the just by
war, or by cruel beasts, or with one rough word to destroy them at
once:

12:10. But executing thy judgments by degrees, thou gavest them place
of repentance, not being ignorant that they were a wicked generation,
and their malice natural, and that their thought could never be
changed.

12:11. For it was a cursed seed from the beginning:  neither didst thou
for fear of any one give pardon to their sins.

12:12. For who shall say to thee:  What hast thou done?  or who shall
withstand thy judgment?  or who shall come before thee to be a revenger
of wicked men?  or who shall accuse thee, if the nations perish, which
thou hast made ?

12:13. For there is no other God but thou, who hast care of all, that
thou shouldst shew that thou dost not give judgment unjustly.

12:14. Neither shall king, nor tyrant, in thy sight inquire about them
whom thou hast destroyed.

12:15. For so much then, as thou art just, thou orderest all things
justly:  thinking it not agreeable to the power, to condemn him who
deserveth not to be punished.

12:16. For thy power is the beginning of justice:  and because thou art
Lord of all, thou makest thyself gracious to all.

12:17. For thou shewest thy power, when men will not believe thee to be
absolute in power, and thou convincest the boldness of them that know
thee not.

12:18. But thou being master of power, judgest with tranquillity, and
with great favour disposest of us:  for thy power is at hand when thou
wilt.

12:19. But thou hast taught thy people by such works, that they must be
just and humane, and hast made thy children to be of a good hope:
because in judging, thou givest place for repentance for sins.

12:20. For if thou didst punish the enemies of thy servants, and that
deserved to die, with so great deliberation, giving them time and place
whereby they might be changed from their wickedness:

12:21. With what circumspection hast thou judged thy own children, to
whose parents thou hast sworn, and made covenants of good promises?

12:22. Therefore whereas thou chastisest us, thou scourgest our enemies
very many ways, to the end that when we judge we may think on thy
goodness:  and when we are judged, we may hope for thy mercy.

12:23. Wherefore thou hast also greatly tormented them, who, in their
life, have lived foolishly and unjustly, by the same things which they
worshipped.

12:24. For they went astray for a long time in the ways of error,
holding those things for gods which are the most worthless among
beasts, living after the manner of children without understanding.

12:25. Therefore thou hast sent a judgment upon them, as senseless
children, to mock them.

12:26. But they that were not amended by mockeries and reprehensions,
experienced the worthy judgment of God.

12:27. For seeing, with indignation, that they suffered by those very
things which they took for gods, when they were destroyed by the same,
they acknowledged him the true God, whom in time past they denied that
they knew:  for which cause the end also of their condemnation came upon
them.



Wisdom Chapter 13


Idolaters are inexcusable:  and those most of all that worship for gods
the works of the hands of men.

13:1. But all men are vain, in whom there is not the knowledge of God:
and who by these good things that are seen, could not understand him
that is, neither by attending to the works have acknowledged who was
the workman:

13:2. But have imagined either the fire, or the wind, or the swift air,
or the circle of the stars, or the great water, or the sun and moon, to
be the gods that rule the world.

13:3. With whose beauty, if they, being delighted, took them to be
gods:  let them know how much the Lord of them is more beautiful than
they:  for the first author of beauty made all those things.

13:4. Or if they admired their power, and their effects, let them
understand by them, that he that made them, is mightier than they:

13:5. For by the greatness of the beauty, and of the creature, the
creator of them may be seen, so as to be known thereby.

13:6. But yet as to these they are less to be blamed.  For they perhaps
err, seeking God, and desirous to find him.

13:7. For being conversant among his works, they search:  and they are
persuaded that the things are good which are seen.

13:8. But then again they are not to be pardoned.

13:9. For if they were able to know so much as to make a judgment of
the world:  how did they not more easily find out the Lord thereof?

13:10. But unhappy are they, and their hope is among the dead, who have
called gods the works of the hand of men, gold and silver, the
inventions of art, and the resemblances of beasts, or an unprofitable
stone the work of an ancient hand.

13:11. Or if an artist, a carpenter, hath cut down a tree proper for
his use in the wood, and skilfully taken off all the bark thereof, and
with his art, diligently formeth a vessel profitable for the common
uses of life,

13:12. And useth the chips of his work to dress his meat:

13:13. And taking what was left thereof, which is good for nothing,
being a crooked piece of wood, and full of knots, carveth it diligently
when he hath nothing else to do, and by the skill of his art fashioneth
it, and maketh it like the image of a man:

13:14. Or the resemblance of some beast, laying it over with vermilion,
and painting it red, and covering every spot that is in it:

13:15. And maketh a convenient dwelling place for it, and setting it in
a wall, and fastening it with iron,

13:16. Providing for it, lest it should fall, knowing that it is unable
to help itself:  for it is an image, and hath need of help.

13:17. And then maketh prayer to it, enquiring concerning his
substance, and his children, or his marriage.  And he is not ashamed to
speak to that which hath no life:

13:18. And for health he maketh supplication to the weak, and for life
prayeth to that which is dead, and for help calleth upon that which is
unprofitable:

13:19. And for a good journey he petitioneth him that cannot walk:  and
for getting, and for working, and for the event of all things he asketh
him that is unable to do any thing.



Wisdom Chapter 14


The beginning of worshipping idols:  and the effects thereof.

14:1. Again, another designing to sail, and beginning to make his
voyage through the raging waves, calleth upon a piece of wood more
frail than the wood that carrieth him.

14:2. For this the desire of gain devised, and the workman built it by
his skill.

14:3. But thy providence, O Father, governeth it:  for thou hast made a
way even in the sea, and a most sure path among the waves,

14:4. Shewing that thou art able to save out of all things, yea, though
a man went to sea without art.

14:5. But that the works of thy wisdom might not be idle:  therefore men
also trust their lives even to a little wood, and passing over the sea
by ship, are saved.

14:6. And from the beginning also, when the proud giants perished, the
hope of the world fleeing to a vessel, which was governed by thy hand,
left to the world seed of generation.

14:7. For blessed is the wood, by which justice cometh

14:8. But the idol that is made by hands, is cursed, as well it, as he
that made it:  he because he made it; and it because being frail it is
called a god.

14:9. But to God the wicked and his wickedness are hateful alike.

14:10. For that which is made, together with him that made it, shall
suffer torments.

14:11. Therefore there shall be no respect had even to the idols of the
Gentiles:  because the creatures of God are turned to an abomination,
and a temptation to the souls of men, and a snare to the feet of the
unwise.

14:12. For the beginning of fornication is the devising of idols:  and
the invention of them is the corruption of life.

14:13. For neither were they from the beginning, neither shall they be
for ever.

14:14. For by the vanity of men they came into the world:  and therefore
they shall be found to come shortly to an end.

14:15. For a father being afflicted with bitter grief, made to himself
the image of his son, who was quickly taken away:  and him who then had
died as a man, he began now to worship as a god, and appointed him
rites and sacrifices among his servants.

14:16. Then, in process of time, wicked custom prevailing, this error
was kept as a law, and statues were worshipped by the commandment of
tyrants.

14:17. And those whom men could not honour in presence, because they
dwelt far off, they brought their resemblance from afar, and made an
express image of the king, whom they had a mind to honour:  that by this
their diligence, they might honour as present, him that was absent.

14:18. And to the worshipping of these, the singular diligence also of
the artificer helped to set forward the ignorant.

14:19. For he being willing to please him that employed him, laboured
with all his art to make the resemblance in the best manner.

14:20. And the multitude of men, carried away by the beauty of the
work, took him now for a god, that little before was but honoured as a
man.

14:21. And this was the occasion of deceiving human life:  for men
serving either their affection, or their kings, gave the incommunicable
name to stones and wood.

14:22. And it was not enough for them to err about the knowledge of
God, but whereas they lived in a great war of ignorance, they call so
many and so great evils peace.

14:23. For either they sacrifice their own children, or use hidden
sacrifices, or keep watches full of madness,

14:24. So that now they neither keep life, nor marriage undefiled, but
one killeth another through envy, or grieveth him by adultery:

14:25. And all things are mingled together, blood, murder, theft, and
dissimulation, corruption and unfaithfulness, tumults and perjury,
disquieting of the good,

14:26. Forgetfulness of God, defiling of souls, changing of nature,
disorder in marriage, and the irregularity of adultery and uncleanness.

14:27. For the worship of abominable idols is the cause, and the
beginning and end of all evil.

14:28. For either they are mad when they are merry:  or they prophesy
lies, or they live unjustly, or easily forswear themselves.

14:29. For whilst they trust in idols, which are without life, though
they swear amiss, they look not to be hurt.

14:30. But for both these things they shall be justly punished, because
they have thought not well of God, giving heed to idols, and have sworn
unjustly, in guile despising justice.

14:31. For it is not the power of them, by whom they swear, but the
just vengeance of sinners always punisheth the transgression of the
unjust.



Wisdom Chapter 15


The servants of God praise him who hath delivered them from idolatry;
condemning both the makers and the worshippers of idols.

15:1. But thou, our God, art gracious and true, patient, and ordering
all things in mercy.

15:2. For if we sin, we are thine, knowing thy greatness:  and if we sin
not, we know that we are counted with thee.

15:3. For to know thee is perfect justice:  and to know thy justice, and
thy power, is the root of immortality.

15:4. For the invention of mischievous men hath not deceived us, nor
the shadow of a picture, a fruitless labour, a graven figure with
divers colours,

15:5. The sight whereof enticeth the fool to lust after it, and he
loveth the lifeless figure of a dead image.

15:6. The lovers of evil things deserve to have no better things to
trust in, both they that make them, and they that love them, and they
that worship them.

15:7. The potter also tempering soft earth, with labour fashioneth
every vessel for our service, and of the same clay he maketh both
vessels that are for clean uses, and likewise such as serve to the
contrary:  but what is the use of these vessels, the potter is the
judge.

15:8. And of the same clay by a vain labour he maketh a god:  he who a
little before was made of earth himself, and a little after returneth
to the same out of which he was taken, when his life, which was lent
him, shall be called for again.

15:9. But his care is, not that he shall labour, nor that his life is
short, but he striveth with the goldsmiths and silversmiths:  and he
endeavoureth to do like the workers in brass, and counteth it a glory
to make vain things.

15:10. For his heart is ashes, and his hope vain earth and his life
more base than clay:

15:11. Forasmuch as he knew not his maker, and him that inspired into
him the soul that worketh, and that breathed into him a living spirit.

15:12. Yea, and they have counted our life a pastime and the business
of life to be gain, and that we must be getting every way, even out of
evil.

15:13. For that man knoweth that he offendeth above all others, who of
earthly matter maketh brittle vessels, and graven gods.

15:14. But all the enemies of thy people that hold them in subjection,
are foolish, and unhappy, and proud beyond measure:

15:15. For they have esteemed all the idols of the heathens for gods,
which neither have the use of eyes to see, nor noses to draw breath,
nor ears to hear, nor fingers of hands to handle, and as for their
feet, they are slow to walk.

15:16. For man made them:  and he that borroweth his own breath,
fashioned them.  For no man can make a god like to himself.

15:17. For being mortal himself, he formeth a dead thing with his
wicked hands.  For he is better than they whom he worshippeth, because
he indeed hath lived, though he were mortal, but they never.

15:18. Moreover, they worship also the vilest creatures:  but things
without sense, compared to these, are worse than they.

15:19. Yea, neither by sight can any man see good of these beasts.  But
they have fled from the praise of God, and from his blessing.



Wisdom Chapter 16


God's different dealings with the Egyptians and with his own people.

16:1. For these things, and by the like things to these, they were
worthily punished, and were destroyed by a multitude of beasts.

16:2. Instead of which punishment, dealing well with thy people, thou
gavest them their desire of delicious food, of a new taste, preparing
for them quails for their meat:

16:3. To the end, that they indeed desiring food, by means of those
things that were shewn and sent among them, might loath even that which
was necessary to satisfy their desire.  But these, after suffering want
for a short time, tasted a new meat.

They indeed desiring food, etc. . .He means the Egyptians; who were
restrained even from that food which was necessary, by the frogs and
the flies that were sent amongst them, and spoiled all their
meats.--Ibid.  But these. . .Viz., the Israelites.

16:4. For it was requisite that inevitable destruction should come upon
them that exercised tyranny:  but to these it should only be shewn how
their enemies were destroyed.

16:5. For when the fierce rage of beasts came upon these, they were
destroyed by the bitings of crooked serpents.

16:6. But thy wrath endured not for ever, but they were troubled for a
short time for their correction, having a sign of salvation, to put
them in remembrance of the commandment of thy law.

Sign of salvation. . .The brazen serpent, an emblem of Christ our
Saviour.

16:7. For he that turned to it, was not healed by that which he saw,
but by thee, the Saviour of all.

16:8. And in this thou didst shew to our enemies, that thou art he who
deliverest from all evil.

16:9. For the bitings of locusts, and of flies, killed them, and there
was found no remedy for their life:  because they were worthy to be
destroyed by such things.

16:10. But not even the teeth of venomous serpents overcame thy
children:  for thy mercy came and healed them.

16:11. For they were examined for the remembrance of thy words, and
were quickly healed, lest falling into deep forgetfulness, they might
not be able to use thy help.

16:12. For it was neither herb, nor mollifying plaster, that healed
them, but thy word, O Lord, which healeth all things.

16:13. For it is thou, O Lord, that hast power of life and death, and
leadest down to the gates of death, and bringest back again:

16:14. A man indeed killeth through malice, and when the spirit is gone
forth, it shall not return, neither shall he call back the soul that is
received:

16:15. But it is impossible to escape thy hand:

16:16. For the wicked that denied to know thee, were scourged by the
strength of thy arm, being persecuted by strange waters, and hail, and
rain, and consumed by fire.

16:17. And which was wonderful, in water, which extinguisheth all
things, the fire had more force:  for the world fighteth for the just.

The fire had more force. . .Viz., when the fire and hail mingled
together laid waste the land of Egypt.  Ex. 9.

16:18. For at one time the fire was mitigated, that the beasts which
were sent against the wicked might not be burnt, but that they might
see, and perceive that they were persecuted by the judgment of God.

16:19. And at another time the fire, above its own power, burnt in the
midst of water, to destroy the fruits of a wicked land.

16:20. Instead of which things, thou didst feed thy people with the
food of angels, and gavest them bread from heaven, prepared without
labour; having in it all that is delicious, and the sweetness of every
taste.

16:21. For thy sustenance shewed thy sweetness to thy children, and
serving every man's will, it was turned to what every man liked.

16:22. But snow and ice endured the force of fire, and melted not:  that
they might know that the fire, burning in the hail, and flashing in the
rain, destroyed the fruits of the enemies.

16:23. But this same again, that the just might be nourished, did even
forget its own strength.

16:24. For the creature serving thee, the Creator, is made fierce
against the unjust for their punishment:  and abateth its strength for
the benefit of them that trust in thee.

16:25. Therefore even then it was transformed into all things, and was
obedient to thy grace, that nourisheth all, according to the will of
them that desired it of thee:

16:26. That thy children, O Lord, whom thou lovedst, might know that it
is not the growing of fruits that nourisheth men, but thy word
preserveth them that believe in thee.

16:27. For that which could not be destroyed by fire, being warmed with
a little sunbeam, presently melted away:

16:28. That it might be known to all, that we ought to prevent the sun
to bless thee, and adore thee at the dawning of the light.

16:29. For the hope of the unthankful shall melt away as the winter's
ice, and shall run off as unprofitable water.



Wisdom Chapter 17


The Egyptian darkness.

17:1. For thy judgments, O Lord, are great, and thy words cannot be
expressed:  therefore undisciplined souls have erred.

17:2. For while the wicked thought to be able to have dominion over the
holy nation, they themselves being fettered with the bonds of darkness,
and a long night, shut up in their houses, lay there exiled from the
eternal providence.

17:3. And while they thought to lie hid in their obscure sins, they
were scattered under a dark veil of forgetfullness, being horribly
afraid, and troubled with exceeding great astonishment.

17:4. For neither did the den that held them, keep them from fear:  for
noises coming down troubled them, and sad visions appearing to them,
affrighted them.

17:5. And no power of fire could give them light, neither could the
bright flames of the stars enlighten that horrible night.

17:6. But there appeared to them a sudden fire, very dreadful:  and
being struck with the fear of that face, which was not seen, they
thought the things which they saw to be worse:

17:7. And the delusions of their magic art were put down, and their
boasting of wisdom was reproachfully rebuked.

17:8. For they who promised to drive away fears and troubles from a
sick soul, were sick themselves of a fear worthy to be laughed at.

17:9. For though no terrible thing disturbed them:  yet being scared
with the passing by of beasts, and hissing of serpents, they died for
fear and denying that they saw the air, which could by no means be
avoided.

17:10. For whereas wickedness is fearful, it beareth witness of its
condemnation:  for a troubled conscience always forecasteth grievous
things.

17:11. For fear is nothing else but a yielding up of the succours from
thought.

17:12. And while there is less expectation from within, the greater
doth it count the ignorance of that cause which bringeth the torment.

17:13. But they that during that night, in which nothing could be done,
and which came upon them from the lowest and deepest hell, slept the
same sleep,

17:14. Were sometimes molested with the fear of monsters, sometimes
fainted away, their soul failing them:  for a sudden and unlooked for
fear was come upon them.

17:15. Moreover, if any of them had fallen down, he was kept shut up in
prison without irons.

17:16. For if any one were a husbandman, or a shepherd, or a labourer
in the field, and was suddenly overtaken, he endured a necessity from
which he could not fly.

17:17. For they were all bound together with one chain of darkness.
Whether it were a whistling wind, or the melodious voice of birds,
among the spreading branches of trees, or a fall of water running down
with violence,

17:18. Or the mighty noise of stones tumbling down, or the running that
could not be seen of beasts playing together, or the roaring voice of
wild beasts, or a rebounding echo from the highest mountains:  these
things made them to swoon for fear.

17:19. For the whole world was enlightened, with a clear light, and
none were hindered in their labours.

17:20. But over them only was spread a heavy night, an image of that
darkness which was to come upon them.  But they were to themselves more
grievous than the darkness.



Wisdom Chapter 18


The slaughter of the firstborn in Egypt:  the efficacy of Aaron's
intercession, in the sedition on occasion of Core.

18:1. But thy saints had a very great light, and they heard their voice
indeed, but did not see their shape.  And because they also did not
suffer the same things, they glorified thee:

18:2. And they that before had been wronged, gave thanks, because they
were not hurt now:  and asked this gift, that there might be a
difference.

18:3. Therefore they received a burning pillar of fire for a guide of
the way which they knew not, and thou gavest them a harmless sun of a
good entertainment.

A harmless sun. . .A light that should not hurt or molest them; but that
should be an agreeable guest to them.

18:4. The others indeed were worthy to be deprived of light, and
imprisoned in darkness, who kept thy children shut up, by whom the pure
light of the law was to be given to the world.

18:5. And whereas they thought to kill the babes of the just:  one child
being cast forth, and saved to reprove them, thou tookest away a
multitude of their children, and destroyedst them altogether in a
mighty water.

One child. . .Viz., Moses.

18:6. For that night was known before by our fathers, that assuredly
knowing what oaths they had trusted to, they might be of better
courage.

18:7. So thy people received the salvation of the just, and destruction
of the unjust.

18:8. For as thou didst punish the adversaries so thou didst also
encourage and glorify us.

18:9. For the just children of good men were offering sacrifice
secretly, and they unanimously ordered a law of justice:  that the just
should receive both good and evil alike, singing now the praises of the
fathers.

Of good men. . .Viz., of the patriarchs.  Their children, the Israelites,
offered in private the sacrifice of the paschal lamb; and were
regulating what they were to do in their journey, when that last and
most dreadful plague was coming upon their enemies.

18:10. But on the other side there sounded an ill according cry of the
enemies, and a lamentable mourning was heard for the children that were
bewailed.

18:11. And the servant suffered the same punishment as the master, and
a common man suffered in like manner as the king.

18:12. So all alike had innumerable dead, with one kind of death.
Neither were the living sufficient to bury them:  for in one moment the
noblest offspring of them was destroyed.

The noblest offspring. . .That is, the firstborn.

18:13. For whereas they would not believe any thing before by reason of
the enchantments, then first upon the destruction of the firstborn,
they acknowledged the people to be of God.

18:14. For while all things were in quiet silence, and the night was in
the midst of her course,

18:15. Thy Almighty word leaped down from heaven from thy royal throne,
as a fierce conqueror into the midst of the land of destruction,

18:16. With a sharp sword carrying thy unfeigned commandment, and he
stood and filled all things with death, and standing on the earth,
reached even to heaven.

18:17. Then suddenly visions of evil dreams troubled them, and fears
unlooked for came upon them.

18:18. And one thrown here, another there, half dead, shewed the cause
of his death.

18:19. For the visions that troubled them foreshewed these things, lest
they should perish, and not know why they suffered these evils.

18:20. But the just also were afterwards touched by an assault of
death, and there was a disturbance of the multitude in the wilderness:
but thy wrath did not long continue;

18:21. For a blameless man made haste to pry for the people, bringing
forth the shield of his ministry, prayer, and by incense making
supplication, withstood the wrath, and put an end to the calamity,
shewing that he was thy servant.

18:22. And he overcame the disturbance, not by strength of body nor
with force of arms, but with a word he subdued him that punished them,
alleging the oath and covenant made with the fathers.

18:23. For when they were now fallen down dead by heaps one upon
another, he stood between and stayed the assault, and cut off the way
to the living.

18:24. For in the priestly robe which he wore, was the whole world:  and
in the four rows of the stones, the glory of the fathers was graven,
and thy majesty was written upon the diadem of his head.

18:26. And to these the destroyer gave place, and was afraid of them:
for the proof only of wrath was enough.



Wisdom Chapter 19


Why God shewed no mercy to the Egyptians.  His favour to the Israelites.
All creatures obey God's orders for the service of the good, and the
punishment of the wicked.

19:1. But as to the wicked, even to the end there came upon them wrath
without mercy.  For he knew before also what they would do:

19:2. For when they had given them leave to depart and had sent them
away with great care, they repented and pursued after them.

19:3. For whilst they were yet mourning, and lamenting at the graves of
the dead, they took up another foolish device:  and pursued them as
fugitives whom they had pressed to be gone:

19:4. For a necessity, of which they were worthy, brought them to this
end:  and they lost the remembrance of those things which had happened,
that their punishment might fill up what was wanting to their torments:

19:5. And that thy people might wonderfully pass through, but they
might find a new death.

19:6. For every creature, according to its kind was fashioned again as
from the beginning, obeying thy commandments, that thy children might
be kept without hurt.

19:7. For a cloud overshadowed their camps and where water was before,
dry land appeared, and in the Red Sea a way without hindrance, and out
of the great deep a springing field:

19:8. Through which all the nation passed which was protected with thy
hand, seeing thy miracles and wonders.

19:9. For they fed on their food like horses, and they skipped like
lambs, praising thee, O Lord, who hadst delivered them.

19:10. For they were yet mindful of those things which had been done in
the time of their sojourning, how the ground brought forth flies
instead of cattle, and how the river cast up a multitude of frogs
instead of fishes.

19:11. And at length they saw a new generation of birds, when being led
by their appetite, they asked for delicate meats.

19:12. For to satisfy their desire, the quail came up to them from the
sea:  and punishments came upon the sinners, not without foregoing signs
by the force of thunders:  for they suffered justly according to their
own wickedness.

19:13. For they exercised a more detestable inhospitality than any:
others indeed received not strangers unknown to them, but these brought
their guests into bondage that had deserved well of them.

19:14. And not only so, but in another respect also they were worse:
for the others against their will received the strangers.

19:15. But these grievously afflicted them whom they had received with
joy, and who lived under the same laws.

19:16. But they were struck with blindness:  as those others were at the
doors of the just man, when they were covered with sudden darkness, and
every one sought the passage of his own door.

19:17. For while the elements are changed in themselves, as in an
instrument the sound of the quality is changed, yet all keep their
sound:  which may clearly be perceived by the very sight.

Elements are changed, etc. . .The meaning is, that whatever changes God
wrought in the elements by miracles in favour of his people, they still
kept their harmony by obeying his will.

19:18. For the things of the land were turned into things of the water:
and the things that before swam in the water passed upon the land.

19:19. The fire had power in water above its own virtue, and the water
forgot its quenching nature.

19:20. On the other side, the flames wasted not the flesh of
corruptible animals walking therein, neither did they melt that good
food, which was apt to melt as ice.  For in all things thou didst
magnify thy people, O Lord, and didst honour them, and didst not
despise them, but didst assist them at all times, and in every place.

That good food. . .The manna.




ECCLESIASTICUS



This Book is so called from a Greek word that signifies a preacher:
because, like an excellent preacher, it gives admirable lessons of all
virtues.  The author was Jesus the son of Sirach of Jerusalem, who
flourished about two hundred years before Christ.  As it was written
after the time of Esdras, it is not in the Jewish canon; but is
received as canonical and divine by the Catholic Church, instructed by
apostolical tradition, and directed by the spirit of God.  It was first
written in the Hebrew, but afterwards translated into Greek, by another
Jesus, the grandson of the author, whose prologue to this book is the
following:



THE PROLOGUE.


The knowledge of many and great things hath been shewn us by the law,
and the prophets, and others that have followed them:  for which things
Israel is to be commended for doctrine and wisdom, because not only
they that speak must needs be skilful, but strangers also, both
speaking and writing, may by their means become most learned.  My
grandfather Jesus, after he had much given himself to a diligent
reading of the law, and the prophets, and other books, that were
delivered to us from our fathers, had a mind also to write something
himself, pertaining to doctrine and wisdom; that such as are desirous
to learn, and are made knowing in these things, may be more and more
attentive in mind, and be strengthened to live according to the law.  I
entreat you therefore to come with benevolence, and to read with
attention, and to pardon us for those things wherein we may seem, while
we follow the image of wisdom, to come short in the composition of
words; for the Hebrew words have not the same force in them when
translated into another tongue.  And not only these, but the law also
itself, and the prophets, and the rest of the books, have no small
difference, when they are spoken in their own language.  For in the
eight and thirtieth year coming into Egypt, when Ptolemy Evergetes was
king, and continuing there a long time, I found there books left, of no
small nor contemptible learning.  Therefore I thought it good, and
necessary for me to bestow some diligence and labour to interpret this
book; and with much watching and study in some space of time, I brought
the book to an end, and set it forth for the service of them that are
willing to apply their mind, and to learn how they ought to conduct
themselves, who purpose to lead their life according to the law of the
Lord.



Ecclesiasticus Chapter 1


All wisdom is from God, and is given to them that fear and love God.

1:1. All wisdom is from the Lord God, and hath been always with him,
and is before all time.

1:2. Who hath numbered the sand of the sea, and the drops of rain, and
the days of the world?  Who hath measured the height of heaven, and the
breadth of the earth, and the depth of the abyss?

1:3. Who hath searched out the wisdom of God that goeth before all
things?

1:4. Wisdom hath been created before all things, and the understanding
of prudence from everlasting.

1:5. The word of God on high is the fountain of wisdom, and her ways
are everlasting commandments.

1:6. To whom hath the root of wisdom been revealed, and who hath known
her wise counsels?

1:7. To whom hath the discipline of wisdom been revealed and made
manifest?  and who hath understood the multiplicity of her steps?

1:8. There is one most high Creator Almighty, and a powerful king, and
greatly to be feared, who sitteth upon his throne, and is the God of
dominion.

1:9. He created her in the Holy Ghost, and saw her, and numbered her,
and measured her.

1:10. And he poured her out upon all his works, and upon all flesh
according to his gift, and hath given her to them that love him.

1:11. The fear of the Lord is honour, and glory, and gladness, and a
crown of joy.

1:12. The fear of the Lord shall delight the heart, and shall give joy,
and gladness, and length of days.

1:13. With him that feareth the Lord, it shall go well in the latter
end, and in the day of his death he shall be blessed.

1:14. The love of God is honourable wisdom.

1:15. And they to whom she shall shew herself love her by the sight,
and by the knowledge of her great works.

1:16. The fear of the Lord is the beginning of wisdom, and was created
with the faithful in the womb, it walketh with chosen women, and is
known with the just and faithful.

1:17. The fear of the Lord is the religiousness of knowledge.

1:18. Religiousness shall keep and justify the heart, it shall give joy
and gladness.

1:19. It shall go well with him that feareth the Lord, and in the days
of his end he shall be blessed.

1:20. To fear God is the fulness of wisdom, and fulness is from the
fruits thereof.

1:21. She shall fill all her house with her increase, and the
storehouses with her treasures.

1:22. The fear of the Lord is a crown of wisdom, filling up peace and
the fruit of salvation:

1:23. And it hath seen, and numbered her:  but both are the gifts of
God.

1:24. Wisdom shall distribute knowledge, and understanding of prudence:
and exalteth the glory of them that hold her.

1:25. The root of wisdom is to fear the Lord:  and the branches thereof
are long-lived.

1:26. In the treasures of wisdom is understanding, and religiousness of
knowledge:  but to sinners wisdom is an abomination.

1:27. The fear of the Lord driveth out sin:

1:28. For he that is without fear, cannot be justified:  for the wrath
of his high spirits is his ruin.

1:29. A patient man shall bear for a time, and afterwards joy shall be
restored to him.

1:30. A good understanding will hide his words for a time, and the lips
of many shall declare his wisdom.

1:31. In the treasures of wisdom is the signification of discipline:

1:32. But the worship of God is an abomination to a sinner.

1:33. Son, if thou desire wisdom, keep justice, and God will give her
to thee.

1:34. For the fear of the Lord is wisdom and discipline:  and that which
is agreeable to him,

1:35. Is faith, and meekness:  and he will fill up his treasures.

1:36. Be not incredulous to the fear of the Lord:  and come not to him
with a double heart.

1:37. Be not a hypocrite in the sight of men, and let not thy lips be a
stumblingblock to thee.

1:38. Watch over them, lest thou fall, and bring dishonour upon thy
soul,

1:39. And God discover thy secrets, and cast thee down in the midst of
the congregation.

1:40. Because thou camest to the Lord wickedly, and thy heart is full
of guile and deceit.



Ecclesiasticus Chapter 2


God's servants must look for temptations:  and must arm themselves with
patience and confidence in God.

2:1. Son, when thou comest to the service of God, stand in justice and
in fear, and prepare thy soul for temptation.

2:2. Humble thy heart, and endure:  incline thy ear, and receive the
words of understanding:  and make not haste in the time of clouds.

2:3. Wait on God with patience:  join thyself to God, and endure, that
thy life may be increased in the latter end.

2:4. Take all that shall be brought upon thee:  and in thy sorrow
endure, and in thy humiliation keep patience.

2:5. For gold and silver are tried in the fire, but acceptable men in
the furnace of humiliation.

2:6. Believe God, and he will recover thee:  and direct thy way, and
trust in him.  Keep his fear, and grow old therein.

2:7. Ye that fear the Lord, wait for his mercy:  and go not aside from
him lest ye fall.

2:8. Ye that fear the Lord, believe him:  and your reward shall not be
made void.

2:9. Ye that fear the Lord hope in him, and mercy shall come to you for
your delight.

2:10. Ye that fear the Lord, love him, and your hearts shall be
enlightened.

2:11. My children behold the generations of men:  and know ye that no
one hath hoped in the Lord, and hath been confounded.

2:12. For who hath continued in his commandment, and hath been
forsaken?  or who hath called upon him, and he despised him?

2:13. For God is compassionate and merciful, and will forgive sins in
the day of tribulation:  and he is a protector to all that seek him in
truth.

2:14. Woe to them that are of a double heart and to wicked lips, and to
the hands that do evil, and to the sinner that goeth on the earth two
ways.

2:15. Woe to them that are fainthearted, who believe not God:  and
therefore they shall not be protected by him.

2:16. Woe to them that have lost patience, and that have forsaken the
right ways, and have gone aside into crooked ways.

2:17. And what will they do, when the Lord shall begin to examine?

2:18. They that fear the Lord, will not be incredulous to his word:  and
they that love him, will keep his way.

2:19. They that fear the Lord, will seek after the things that are well
pleasing to him:  and they that love him, shall be filled with his law.

2:20. They that fear the Lord, will prepare their hearts, and in his
sight will sanctify their souls,

2:21. They that fear the Lord, keep his commandments, and will have
patience even until his visitation,

2:22. Saying:  If we do not penance, we shall fall into the hands of the
Lord, and not into the hands of men.

2:23. For according to his greatness, so also is his mercy with him.



Ecclesiasticus Chapter 3


Lessons concerning the honour of parents, and humility, and avoiding
curiosity.

3:1. The sons of wisdom are the church of the just:  and their
generation, obedience and love.

3:2. Children, hear the judgment of your father, and so do that you may
be saved.

3:3. For God hath made the father honourable to the children:  and
seeking the judgment of the mothers, hath confirmed it upon the
children.

3:4. He that loveth God, shall obtain pardon for his sins by prayer,
and shall refrain himself from them, and shall be heard in the prayer
of days.

3:5. And he that honoureth his mother is as one that layeth up a
treasure.

3:6. He that honoureth his father shall have joy in his own children,
and in the day of his prayer he shall be heard.

3:7. He that honoureth his father shall enjoy a long life:  and he that
obeyeth the father, shall be a comfort to his mother.

3:8. He that feareth the Lord, honoureth his parents, and will serve
them as his masters that brought him into the world.

3:9. Honour thy father, in work and word, and all patience,

3:10. That a blessing may come upon thee from him, and his blessing may
remain in the latter end.

3:11. The father's blessing establisheth the houses of the children:
but the mother's curse rooteth up the foundation.

3:12. Glory not in the dishonour of thy father:  for his shame is no
glory to thee.

3:13. For the glory of a man is from the honour of his father, and a
father without honour is the disgrace of the son.

3:14. Son, support the old age of thy father, and grieve him not in his
life;

3:15. And if his understanding fail, have patience with him, and
despise him not when thou art in thy strength:  for the relieving of the
father shall not be forgotten.

3:16. For good shall be repaid to thee for the sin of thy mother.

3:17. And in justice thou shalt be built up, and in the day of
affliction thou shalt be remembered:  and thy sins shall melt away as
the ice in the fair warm weather.

3:18. Of what an evil fame is he that forsaketh his father:  and he is
cursed of God that angereth his mother.

3:19. My son, do thy works in meekness, and thou shalt be beloved above
the glory of men.

3:20. The greater thou art, the more humble thyself in all things, and
thou shalt find grace before God:

3:21. For great is the power of God alone, and he is honoured by the
humble.

3:22. Seek not the things that are too high for thee, and search not
into things above thy ability:  but the things that God hath commanded
thee, think on them always, and in many of his works be not curious.

3:23. For it is not necessary for thee to see with thy eyes those
things that are hid.

3:24. In unnecessary matters be not over curious, and in many of his
works thou shalt not be inquisitive.

3:25. For many things are shewn to thee above the understanding of men.

3:26. And the suspicion of them hath deceived many, and hath detained
their minds in vanity.

3:27. A hard heart shall fear evil at the last:  and he that loveth
danger shall perish in it.

3:28. A heart that goeth two ways shall not have success, and the
perverse of heart shall be scandalized therein.

3:29. A wicked heart shall be laden with sorrows, and the sinner will
add sin to sin.

3:30. The congregation of the proud shall not be healed:  for the plant
of wickedness shall take root in them, and it shall not be perceived.

3:31. The heart of the wise is understood in wisdom, and a good ear
will hear wisdom with all desire.

3:32. A wise heart, and which hath understanding, will abstain from
sins, and in the works of justice shall have success.

3:33. Water quencheth a flaming fire, and alms resisteth sins:

3:34. And God provideth for him that sheweth favour:  he remembereth him
afterwards, and in the time of his fall he shall find a sure stay.



Ecclesiasticus Chapter 4


An exhortation to works of mercy, and to the love of wisdom.

4:1. Son, defraud not the poor of alms, and turn not away thy eyes from
the poor.

4:2. Despise not the hungry soul:  and provoke not the poor in his want.

4:3. Afflict not the heart of the needy, and defer not to gibe to him
that is in distress.

4:4. Reject not the petition of the afflicted:  and turn not away thy
face from the needy.

4:5. Turn not away thy eyes from the poor for fear of anger:  and leave
not to them that ask of thee to curse thee behind thy back.

4:6. For the prayer of him that curseth thee in the bitterness of his
soul, shall be heard, for he that made him will hear him.

4:7. Make thyself affable to the congregation of the poor, and humble
thy soul to the ancient, and bow thy head to a great man.

4:8. Bow down thy ear cheerfully to the poor, and pay what thou owest,
and answer him peaceable words with mildness.

4:9. Deliver him that suffereth wrong out of the hand of the proud:  and
be not fainthearted in thy soul.

4:10. In judging be merciful to the fatherless as a father, and as a
husband to their mother.

4:11. And thou shalt be as the obedient son of the most High, and he
will have mercy on thee more than a mother.

4:12. Wisdom inspireth life into her children, and protecteth them that
seek after her, and will go before them in the way of justice.

4:13. And he that loveth her, loveth life:  and they that watch for her,
shall embrace her sweetness.

4:14. They that hold her fast, shall inherit life:  and whithersoever
she entereth, God will give a blessing.

4:15. They that serve her, shall be servants to the holy one:  and God
loveth them that love her.

4:16. He that hearkeneth to her, shall judge nations:  and he that
looketh upon her, shall remain secure.

4:17. If he trust to her, he shall inherit her, and his generation
shall be in assurance.

4:18. For she walketh with him in temptation, and at the first she
chooseth him.

In temptation, etc. . .The meaning is, that before wisdom will choose
any for her favourite, she will try them by leading them through
contradictions, afflictions, and temptations, the usual noviceship of
the children of God.

4:19. She will bring upon him fear and dread and trial:  and she will
scourge him with the affliction of her discipline, till she try him by
her laws, and trust his soul.

4:20. Then she will strengthen him, and make a straight way to him, and
give him joy,

4:21. And will disclose her secrets to him, and will heap upon him
treasures of knowledge and understanding of justice.

4:22. But if he go astray, she will forsake him, and deliver him into
the hands of his enemy.

4:23. Son, observe the time, and fly from evil.

4:24. For thy soul be not ashamed to say the truth.

4:25. For there is a shame that bringeth sin, and there is a shame that
bringeth glory and grace.

4:26. Accept no person against thy own person, nor against thy soul a
lie.

4:27. Reverence not thy neighbour in his fall:

4:28. And refrain not to speak in the time of salvation.  Hide not thy
wisdom in her beauty.

4:29. For by the tongue wisdom is discerned:  and understanding, and
knowledge, and learning by the word of the wise, and steadfastness in
the works of justice.

4:30. In nowise speak against the truth, but be ashamed of the lie of
thy ignorance.

4:31. Be not ashamed to confess thy sins, but submit not thyself to
every man for sin.

4:32. Resist not against the face of the mighty, and do not strive
against the stream of the river.

4:33. Strive for justice for thy soul, and even unto death fight for
justice, and God will overthrow thy enemies for thee.

4:34. Be not hasty in thy tongue:  and slack and remiss in thy works.

4:35. Be not as a lion in thy house, terrifying them of thy household,
and oppressing them that are under thee.

4:36. Let not thy hand be stretched out to receive, and shut when thou
shouldst give.



Ecclesiasticus Chapter 5


We must not presume of our wealth or strength:  nor of the mercy of God,
to go on in sin:  we must be steadfast in virtue and truth.

5:1. Set not thy heart upon unjust possessions, and say not:  I have
enough to live on:  for it shall be of no service in the time of
vengeance and darkness.

5:2. Follow not in thy strength the desires of thy heart:

5:3. And say not:  How mighty am I?  and who shall bring me under for my
deeds?  for God will surely take revenge.

5:4. Say not:  I have sinned, and what harm hath befallen me?  for the
most High is a patient rewarder.

5:5. Be not without fear about sin forgiven, and add not sin upon sin:

5:6. And say not:  The mercy of the Lord is great, he will have mercy on
the multitude of my sins.

5:7. For mercy and wrath quickly come from him, and his wrath looketh
upon sinners.

5:8. Delay not to be converted to the Lord, and defer it not from day
to day.

5:9. For his wrath shall come on a sudden, and in the time of vengeance
he will destroy thee.

5:10. Be not anxious for goods unjustly gotten:  for they shall not
profit thee in the day of calamity and revenge.

5:11. Winnow not with every wind, and go not into every way:  for so is
every sinner proved by a double tongue.

5:12. Be steadfast in the way of the Lord, and in the truth of thy
judgment, and in knowledge, and let the word of peace and justice keep
with thee.

5:13. Be meek to hear the word, that thou mayst understand:  and return
a true answer with wisdom.

5:14. If thou have understanding, answer thy neighbour:  but if not, let
thy hand be upon thy mouth, lest thou be surprised in an unskilful
word, and be confounded.

5:15. Honour and glory is in the word of the wise, but the tongue of
the fool is his ruin.

5:16. Be not called a whisperer, and be not taken in thy tongue, and
confounded.

5:17. For confusion and repentance is upon a thief, and an evil mark of
disgrace upon the double tongued, but to the whisperer hatred, and
enmity, and reproach.

5:18. Justify alike the small and the great.



Ecclesiasticus Chapter 6


Of true and false friends:  and of the of the fruits of wisdom.

6:1. Instead of a friend become not an enemy to thy neighbour:  for an
evil man shall inherit reproach and shame, so shall every sinner that
is envious and double tongued.

6:2. Extol not thyself in the thoughts of thy soul like a bull:  lest
thy strength be quashed by folly,

6:3. And it eat up thy leaves, and destroy thy fruit, and thou be left
as a dry tree in the wilderness.

6:4. For a wicked soul shall destroy him that hath it, and maketh him
to be a joy to his enemies, and shall lead him into the lot of the
wicked.

6:5. A sweet word multiplieth friends, and appeaseth enemies, and a
gracious tongue in a good man aboundeth.

6:6. Be in peace with many, but let one of a thousand be thy
counsellor.

6:7. If thou wouldst get a friend, try him before thou takest him, and
do not credit him easily.

6:8. For there is a friend for his own occasion, and he will not abide
in the day of thy trouble.

6:9. And there is a friend that turneth to enmity; and there is a
friend that will disclose hatred and strife and reproaches.

6:10. And there is a friend a companion at the table, and he will not
abide in the day of distress.

6:11. A friend if he continue steadfast, shall be to thee as thyself,
and shall act with confidence among them of thy household.

6:12. If he humble himself before thee, and hide himself from thy face,
thou shalt have unanimous friendship for good.

6:13. Separate thyself from thy enemies, and take heed of thy friends.

6:14. A faithful friend is a strong defence:  and he that hath found
him, hath found a treasure.

6:15. Nothing can be compared to a faithful friend, and no weight of
gold and silver is able to countervail the goodness of his fidelity.

6:16. A faithful friend is the medicine of life and immortality:  and
they that fear the Lord, shall find him.

6:17. He that feareth God, shall likewise have good friendship:  because
according to him shall his friend be.

6:18. My son, from thy youth up receive instruction, and even to thy
grey hairs thou shalt find wisdom.

6:19. Come to her as one that plougheth, and soweth, and wait for her
good fruits:

6:20. For in working about her thou shalt labour a little, and shalt
quickly eat of her fruits.

6:21. How very unpleasant is wisdom to the unlearned, and the unwise
will not continue with her.

6:22. She shall be to them as a mighty stone of trial, and they will
cast her from them before it be long.

6:23. For the wisdom of doctrine is according to her name, and she is
not manifest unto many, but with them to whom she is known, she
continueth even to the sight of God.

6:24. Give ear, my son, and take wise counsel, and cast not away my
advice.

6:25. Put thy feet into her fetters, and thy neck into her chains:

6:26. Bow down thy shoulder, and bear her, and be not grieved with her
bands.

6:27. Come to her with all thy mind, and keep her ways with all thy
power.

6:28. Search for her, and she shall be made known to thee, and when
thou hast gotten her, let her not go:

6:29. For in the latter end thou shalt find rest in her, and she shall
be turned to thy joy.

6:30. Then shall her fetters be a strong defence for thee, and a firm
foundation, and her chain a robe of glory:

6:31. For in her is the beauty of life, and her bands are a healthful
binding.

6:32. Thou shalt put her on as a robe of glory, and thou shalt set her
upon thee as a crown of joy.

6:33. My son, if thou wilt attend to me, thou shalt learn:  and if thou
wilt apply thy mind, thou shalt be wise.

6:34. If thou wilt incline thy ear, thou shalt receive instruction:  and
if thou love to hear, thou shalt be wise.

6:35. Stand in the multitude of ancients that are wise, and join
thyself from thy heart to their wisdom, that thou mayst hear every
discourse of God, and the sayings of praise may not escape thee.

6:36. And if thou see a man of understanding, go to him early in the
morning, and let thy foot wear the steps of his doors.

6:37. Let thy thoughts be upon the precepts of God, and meditate
continually on his commandments:  and he will give thee a heart, and the
desire of wisdom shall be given to thee.



Ecclesiasticus Chapter 7


Religious and moral duties.

7:1. Do no evils, and no evils shall lay hold of thee.

7:2. Depart from the unjust, and evils shall depart from thee.

7:3. My son, sow not evils in the furrows of injustice, and thou shalt
not reap them sevenfold.

7:4. Seek not of the Lord a preeminence, nor of the king the seat of
honour.

7:5. Justify not thyself before God, for he knoweth the heart:  and
desire not to appear wise before the king.

7:6. Seek not to be made a judge, unless thou have strength enough to
extirpate iniquities:  lest thou fear the person of the powerful, and
lay a stumblingblock for thy integrity.

7:7. Offend not against the multitude of a city, neither cast thyself
in upon the people,

7:8. Nor bind sin to sin:  for even in one thou shalt not be unpunished.

7:9. Be not fainthearted in thy mind:

7:10. Neglect not to pray, and to give alms.

7:11. Say not:  God will have respect to the multitude of my gifts, and
when I offer to the most high God, he will accept my offerings.

7:12. Laugh no man to scorn in the bitterness of his soul:  for there is
one that humbleth and exalteth, God who seeth all.

7:13. Devise not a lie against thy brother:  neither do the like against
thy friend.

7:14. Be not willing to make any manner of lie:  for the custom thereof
is not good.

7:15. Be not full of words in a multitude of ancients, and repeat not
the word in thy prayer.

Repeat not, etc. . .Make not much babbling by repetition of words:  but
aim more at fervour of heart.

7:16. Hate not laborious works, nor husbandry ordained by the most
High.

7:17. Number not thyself among the multitude of the disorderly.

7:18. Remember wrath, for it will not tarry long.

7:19. Humble thy spirit very much:  for the vengeance on the flesh of
the ungodly is fire and worms.

7:20. Do not transgress against thy friend deferring money, nor despise
thy dear brother for the sake of gold.

7:21. Depart not from a wise and good wife, whom thou hast gotten in
the fear of the Lord:  for the grace of her modesty is above gold.

7:22. Hurt not the servant that worketh faithfully, nor the hired man
that giveth thee his life.

7:23. Let a wise servant be dear to thee as thy own soul, defraud him
not of liberty, nor leave him needy.

7:24. Hast thou cattle?  have an eye to them:  and if they be for thy
profit, keep them with thee.

7:25. Hast thou children?  instruct them, and bow down their neck from
their childhood.

7:26. Hast thou daughters?  have a care of their body, and shew not thy
countenance gay towards them.

7:27. Marry thy daughter well, and thou shalt do a great work, and give
her to a wise man.

7:28. If thou hast a wife according to thy soul, cast her not off:  and
to her that is hateful, trust not thyself.  With thy whole heart,

7:29. Honour thy father, and forget not the groanings of thy mother:

7:30. Remember that thou hadst not been born but through them:  and make
a return to them as they have done for thee.

7:31. With all thy soul fear the Lord, and reverence his priests.

7:32. With all thy strength love him that made thee:  and forsake not
his ministers.

7:33. Honour God with all thy soul and give honour to the priests, and
purify thyself with thy arms.

Thy arms. . .That is, with all thy power:  or else by arms (brachiis) are
here signified the right shoulders of the victims, which by the law
fell to the priests.  See ver. 35.

7:34. Give them their portion, as it is commanded thee, of the
firstfruits and of purifications:  and for thy negligences purify
thyself with a few.

7:35. Offer to the Lord the gift of thy shoulders, and the sacrifice of
sanctification, and the firstfruits of the holy things:

7:36. And stretch out thy hand to the poor, that thy expiation and thy
blessing may be perfected.

7:37. A gift hath grace in the sight of all the living, and restrain
not grace from the dead.

And restrain not grace from the dead. . .That is, withhold not from them
the benefit of alms, prayers, and sacrifices.  Such was the doctrine and
practice of the church of God even in the time of the Old Testament.
And the same has always been continued from the days of the apostles in
the church of the New Testament.

7:38. Be not wanting in comforting them that weep, and walk with them
that mourn.

7:39. Be not slow to visit the sick:  for by these things thou shalt be
confirmed in love.

7:40. In all thy works remember thy last end, and thou shalt never sin.



Ecclesiasticus Chapter 8


Other lessons of wisdom and virtue.

8:1. Strive not with a powerful man, lest thou fall into his hands.

8:2. Contend not with a rich man, lest he bring an action against thee.

8:3. For gold and silver hath destroyed many, and hath reached even to
the heart of kings, and perverted them.

8:4. Strive not with a man that is full of tongue, and heap not wood
upon his fire.

8:5. Communicate not with an ignorant man, lest he speak ill of thy
family.

8:6. Despise not a man that turneth away from sin, nor reproach him
therewith:  remember that we are all worthy of reproof.

8:7. Despise not a man in his old age; for we also shall become old.

8:8. Rejoice not at the death of thy enemy; knowing that we all die,
and are not willing that others should rejoice at our death.

8:9. Despise not the discourse of them that are ancient and wise, but
acquaint thyself with their proverbs.

8:10. For of them thou shalt learn wisdom, and instruction of
understanding, and to serve great men without blame.

8:11. Let not the discourse of the ancients escape thee, for they have
learned of their fathers:

8:12. For of them thou shalt learn understanding, and to give an answer
in time of need.

8:13. Kindle not the coals of sinners by rebuking them, lest thou be
burnt with the flame of the fire of their sins.

8:14. Stand not against the face of an injurious person, lest he sit as
a spy to entrap thee in thy words.

8:15. Lend not to a man that is mightier than thyself:  and if thou
lendest, count it as lost.

8:16. Be not surety above thy power:  and if thou be surety, think as if
thou wert to pay it.

8:17. Judge not against a judge:  for he judgeth according to that which
is just.

8:18. Go not on the way with a bold man, lest he burden thee with his
evils:  for he goeth according to his own will, and thou shalt perish
together with his folly.

8:19. Quarrel not with a passionate man, and go not into the desert
with a bold man:  for blood is as nothing in his sight, and where there
is no help he will overthrow thee.

8:20. Advise not with fools, for they cannot love but such things as
please them.

8:21. Before a stranger do no matter of counsel:  for thou knowest not
what he will bring forth.

8:22. Open not thy heart to every man:  lest he repay thee with an evil
turn, and speak reproachfully to thee.



Ecclesiasticus Chapter 9


Cautions with regard to women, and dangerous conversations.

9:1. Be not jealous over the wife of thy bosom, lest she shew in thy
regard the malice of a wicked lesson.

9:2. Give not the power of thy soul to a woman, lest she enter upon thy
strength, and thou be confounded.

9:3. Look not upon a woman that hath a mind for many:  lest thou fall
into her snares.

9:4. Use not much the company of her that is a dancer, and hearken not
to her, lest thou perish by the force of her charms.

9:5. Gaze not upon a maiden, lest her beauty be a stumblingblock to
thee.

9:6. Give not thy soul to harlots in any point:  lest thou destroy
thyself and thy inheritance.

9:7. Look not round about thee in the ways of the city, nor wander up
and down in the streets thereof.

9:8. Turn away thy face from a woman dressed up, and gaze not about
upon another's beauty.

9:9. For many have perished by the beauty of a woman, and hereby lust
is enkindled as a fire.

9:10. Every woman that is a harlot, shall be trodden upon as dung in
the way.

9:11. Many by admiring the beauty of another man's wife, have become
reprobate, for her conversation burneth as fire.

9:12. Sit not at all with another man's wife, nor repose upon the bed
with her:

9:13. And strive not with her over wine, lest thy heart decline towards
her and by thy blood thou fall into destruction.

9:14. Forsake not an old friend, for the new will not be like to him.

9:15. A new friend is as new wine:  it shall grow old, and thou shalt
drink it with pleasure.

9:16. Envy not the glory and riches of a sinner:  for thou knowest not
what his ruin shall be.

9:17. Be not pleased with the wrong done by the unjust, knowing that
even to hell the wicked shall not please.

9:18. Keep thee far from the man that hath power to kill, so thou shalt
not suspect the fear of death.

9:19. And if thou come to him, commit no fault, lest he take away thy
life.

9:20. Know it to be a communication with death:  for thou art going in
the midst of snares, and walking upon the arms of them that are
grieved.

9:21. According to thy power beware of thy neighbour, and treat with
the wise and prudent.

9:22. Let just men be thy guests, and let thy glory be in the fear of
God.

9:23. And let the thought of God be in thy mind, and all thy discourse
on the commandments of the Highest.

9:24. Works shall be praised for the hand of the artificers, and the
prince of the people for the wisdom of his speech, but the word of the
ancients for the sense.

9:25. A man full of tongue is terrible in his city, and he that is rash
in his word shall be hateful.



Ecclesiasticus Chapter 10


The virtues and vices of men in power:  the great evil of pride.

10:1. A wise judge shall judge his people, and the government of a
prudent man shall be steady.

Judge his people. . .In the Greek it is, instruct his people.

10:2. As the judge of the people is himself, so also are his ministers:
and what manner of man the ruler of a city is, such also are they that
dwell therein.

10:3. An unwise king shall be the ruin of his people:  and cities shall
be inhabited through the prudence of the rulers.

10:4. The power of the earth is in the hand of God, and in his time he
will raise up a profitable ruler over it.

10:5. The prosperity of man is in the hand of God, and upon the person
of the scribe he shall lay his honour.

The scribe. . .That is, the man that is wise and learned in the law.

10:6. Remember not any injury done thee by thy neighbour, and do thou
nothing by deeds of injury.

10:7. Pride is hateful before God and men:  and all iniquity of nations
is execrable.

10:8. A kingdom is translated from one people to another, because of
injustices, and wrongs, and injuries, and divers deceits.

10:9. But nothing is more wicked than the covetous man.  Why is earth,
and ashes proud?

10:10. There is not a more wicked thing than to love money:  for such a
one setteth even his own soul to sale:  because while he liveth he hath
cast away his bowels.

10:11. All power is of short life.  A long sickness is troublesome to
the physician.

10:12. The physician cutteth off a short sickness:  so also a king is to
day, and to morrow he shall die.

10:13. For when a man shall die, he shall inherit serpents, and beasts,
and worms.

10:14. The beginning of the pride of man, is to fall off from God:

10:15. Because his heart is departed from him that made him:  for pride
is the beginning of all sin:  he that holdeth it, shall be filled with
maledictions, and it shall ruin him in the end.

10:16. Therefore hath the Lord disgraced the assemblies of the wicked,
and hath utterly destroyed them.

10:17. God hath overturned the thrones of proud princes, and hath set
up the meek in their stead.

10:18. God hath made the roots of proud nations to wither, and hath
planted the humble of these nations.

10:19. The Lord hath overthrown the lands of the Gentiles, and hath
destroyed them even to the foundation.

10:20. He hath made some of them to wither away, and hath destroyed
them, and hath made the memory of them to cease from the earth.

10:21. God hath abolished the memory of the proud, and hath preserved
the memory of them that are humble in mind.

10:22. Pride was not made for men:  nor wrath for the race of women.

10:23. That seed of men shall be honoured, which feareth God:  but that
seed shall be dishonoured, which transgresseth the commandments of the
Lord.

10:24. In the midst of brethren their chief is honourable:  so shall
they that fear the Lord, be in his eyes.

10:25. The fear of God is the glory of the rich, and of the honourable,
and of the poor.

10:26. Despise not a just man that is poor, and do not magnify a sinful
man that is rich.

10:27. The great man, and the judge, and the mighty is in honour:  and
there is none greater than he that feareth God.

10:28. They that are free shall serve a servant that is wise:  and a man
that is prudent and well instructed will not murmur when he is
reproved; and he that is ignorant, shall not be honoured.

10:29. Extol not thyself in doing thy work, and linger not in the time
of distress;

10:30. Better is he that laboureth, and aboundeth in all things, than
he that boasteth himself and wanteth bread.

10:31. My son, keep thy soul in meekness, and give it honour according
to its desert.

10:32. Who will justify him that sinneth against his own soul?  and who
will honour him that dishonoureth his own soul?

10:33. The poor man is glorified by his discipline and fear, and there
is a man that is honoured for his wealth.

10:34. But he that is glorified in poverty, how much more in wealth?
and he that is glorified in wealth, let him fear poverty.



Ecclesiasticus Chapter 11


Lessons of humility and moderation in all things.

11:1. The wisdom of the humble shall exalt his head, and shall make him
sit in the midst of great men.

11:2. Praise not a man for his beauty, neither despise a man for his
look.

11:3. The bee is small among flying things but her fruit hath the
chiefest sweetness.

11:4. Glory not in apparel at any time, and be not exalted in the day
of thy honour:  for the works of the Highest only are wonderful, and his
works are glorious, and secret, and hidden.

11:5. Many tyrants have sat on the throne, and he whom no man would
think on, hath worn the crown.

11:6. Many mighty men have been greatly brought down, and the glorious
have been delivered into the hand of others.

11:7. Before thou inquire, blame no man:  and when thou hast inquired,
reprove justly.

11:8. Before thou hear, answer not a word:  and interrupt not others in
the midst of their discourse.

11:9. Strive not in a matter which doth not concern thee, and sit not
in judgment with sinners.

11:10. My son, meddle not with many matters:  and if thou be rich, thou
shalt not be free from sin:  for if thou pursue after thou shalt not
overtake; and if thou run before thou shalt not escape.

11:11. There is an ungodly man that laboureth, and maketh haste, and is
in sorrow, and is so much the more in want.

11:12. Again, there is an inactive man that wanteth help, is very weak
in ability, and full of poverty:

11:13. Yet the eye of God hath looked upon him for good, and hath
lifted him up from his low estate, and hath exalted his head:  and many
have wondered at him, and have glorified God.

11:14. Good things and evil, life and death, poverty and riches, are
from God.

11:15. Wisdom and discipline, and the knowledge of the law are with
God.  Love and the ways of good things are with him.

11:16. Error and darkness are created with sinners:  and they that glory
in evil things, grow old in evil.

11:17. The gift of God abideth with the just, and his advancement shall
have success for ever.

11:18. There is one that is enriched by living sparingly, and this is
the portion of his reward.

11:19. In that he saith:  I have found me rest, and now I will eat of my
goods alone:

11:20. And he knoweth not what time shall pass, and that death
approacheth, and that he must leave all to others, and shall die.

11:21. Be steadfast in thy covenant, and be conversant therein, and
grow old in the work of thy commandments.

11:22. Abide not in the works of sinners.  But trust in God, and stay in
thy place,

11:23. For it is easy in the eyes of God on a sudden to make the poor
man rich.

11:24. The blessing of God maketh haste to reward the just, and in a
swift hour his blessing beareth fruit.

11:25. Say not:  What need I, and what good shall I have by this?

11:26. Say not:  I am sufficient for myself:  and what shall I be made
worse by this?

11:27. In the day of good things be not unmindful of evils:  and in the
day of evils be not unmindful of good things:

11:28. For it is easy before God in the day of death to reward every
one according to his ways.

11:29. The affliction of an hour maketh one forget great delights, and
in the end of a man is the disclosing of his works.

11:30. Praise not any man before death, for a man is known by his
children.

11:31. Bring not every man into thy house:  for many are the snares of
the deceitful.

11:32. For as corrupted bowels send forth stinking breath, and as the
partridge is brought into the cage, and as the roe into the snare:  so
also is the heart of the proud, and as a spy that looketh on the fall
of his neighbour.

11:33. For he lieth in wait and turneth good into evil, and on the
elect he will lay a blot.

11:34. Of one spark cometh a great fire, and of one deceitful man much
blood:  and a sinful man lieth in wait for blood.

11:35. Take heed to thyself of a mischievous man, for he worketh evils:
lest he bring upon thee reproach for ever.

11:36. Receive a stranger in, and he shall overthrow thee with a
whirlwind, and shall turn thee out of thy own.



Ecclesiasticus Chapter 12


We are to be liberal to the just:  and not to trust the wicked.

12:1. If thou do good, know to whom thou dost it, and there shall be
much thanks for thy good deeds.

12:2. Do good to the just, and thou shalt find great recompense:  and if
not of him, assuredly of the Lord.

12:3. For there is no good for him that is always occupied in evil, and
that giveth no alms:  for the Highest hateth sinners, and hath mercy on
the penitent.

12:4. Give to the merciful and uphold not the sinner:  God will repay
vengeance to the ungodly and to sinners, and keep them against the day
of vengeance.

12:5. Give to the good, and receive not a sinner.

12:6. Do good to the humble, and give not to the ungodly:  hold back thy
bread, and give it not to him, lest thereby he overmaster thee.

12:7. For thou shalt receive twice as much evil for all the good thou
shalt have done to him:  for the Highest also hateth sinners, and will
repay vengeance to the ungodly.

12:8. A friend shall not be known in prosperity, and an enemy shall not
be hidden in adversity.

12:9. In the prosperity of a man, his enemies are grieved:  and a friend
is known in his adversity.

12:10. Never trust thy enemy for as a brass pot his wickedness rusteth:

12:11. Though he humble himself and go crouching, yet take good heed
and beware of him.

12:12. Set him not by thee, neither let him sit on thy right hand, lest
he turn into thy place, and seek to take thy seat and at the last thou
acknowledge my words, and be pricked with my sayings.

12:13. Who will pity an enchanter struck by a serpent, or any that come
near wild beasts?  so is it with him that keepeth company with a wicked
man, and is involved in his sins.

12:14. For an hour he will abide with thee:  but if thou begin to
decline, he will not endure it.

12:15. An enemy speaketh sweetly with his lips, but in his heart he
lieth in wait, to throw thee into a pit.

12:16. An enemy weepeth with his eyes:  but if he find an opportunity he
will not be satisfied with blood:

12:17. And if evils come upon thee, thou shalt find him there first.

12:18. An enemy hath tears in his eyes, and while he pretendeth to help
thee, will undermine thy feet.

12:19. He will shake his head, and clap his hands, and whisper much,
and change his countenance.



Ecclesiasticus Chapter 13


Cautions in the choice of company.

13:1. He that toucheth pitch, shall be defiled with it:  and he that
hath fellowship with the proud, shall put on pride.

13:2. He shall take a burden upon him that hath fellowship with one
more honourable than himself.  And have no fellowship with one that is
richer than thyself.

13:3. What agreement shall the earthen pot have with the kettle?  for if
they knock one against the other, it shall be broken.

13:4. The rich man hath done wrong, and yet he will fume:  but the poor
is wronged and must hold his peace.

13:5. If thou give, he will make use of thee:  and if thou have nothing,
he will forsake thee.

13:6. If thou have any thing, he will live with thee, and will make
thee bare, and he will not be sorry for thee.

13:7. If he have need of thee he will deceive thee, and smiling upon
thee will put thee in hope; he will speak thee fair, and will say:  What
wantest thou?

13:8. And he will shame thee by his meats, till he have drawn thee dry
twice or thrice, and at last he will laugh at thee:  and afterward when
he seeth thee, he will forsake thee, and shake his head at thee.

13:9. Humble thyself to God, and wait for his hands.

13:10. Beware that thou be not deceived into folly, and be humbled.

13:11. Be not lowly in thy wisdom, lest being humbled thou be deceived
into folly.

13:12. If thou be invited by one that is mightier, withdraw thyself:
for so he will invite thee the more.

13:13. Be not troublesome to him, lest thou be put back:  and keep not
far from him, lest thou be forgotten.

13:14. Affect not to speak with him as an equal, and believe not his
many words:  for by much talk he will sift thee, and smiling will
examine thee concerning thy secrets.

13:15. His cruel mind will lay up thy words:  and he will not spare to
do thee hurt, and to cast thee into prison.

13:16. Take heed to thyself, and attend diligently to what thou
hearest:  for thou walkest in danger of thy ruin.

13:17. When thou hearest those things, see as it were in sleep, and
thou shalt awake.

13:18. Love God all thy life, and call upon him for thy salvation.

13:19. Every beast loveth its like:  so also every man him that is
nearest to himself.

13:20. All flesh shall consort with the like to itself, and every man
shall associate himself to his like.

13:21. If the wolf shall at any time have fellowship with the lamb, so
the sinner with the just.

13:22. What fellowship hath a holy man with a dog, or what part hath
the rich with the poor?

13:23. The wild ass is the lion's prey in the desert:  so also the poor
are devoured by the rich.

13:24. And as humility is an abomination to the proud:  so also the rich
man abhorreth the poor.

13:25. When a rich man is shaken, he is kept up by his friends:  but
when a poor man is fallen down, he is thrust away even by his
acquaintance.

13:26. When a rich man hath been deceived, he hath many helpers:  he
hath spoken proud things, and they have justified him.

13:27. The poor man was deceived, and he is rebuked also:  he hath
spoken wisely, and could have no place.

13:28. The rich man spoke, and all held their peace, and what he said
they extol even to the clouds.

13:29. The poor man spoke, and they say:  Who is this?  and if he
stumble, they will overthrow him.

13:30. Riches are good to him that hath no sin in his conscience:  and
poverty is very wicked in the mouth of the ungodly.

13:31. The heart of a man changeth his countenance, either for good, or
for evil.

13:32. The token of a good heart, and a good countenance thou shalt
hardly find, and with labour.



Ecclesiasticus Chapter 14


The evil of avarice:  works of mercy are recommended, and the love of
wisdom.

14:1. Blessed is the man that hath not slipped by a word out of his
mouth, and is not pricked with the remorse of sin.

14:2. Happy is he that hath had no sadness of his mind, and who is not
fallen from his hope.

14:3. Riches are not comely for a covetous man and a niggard, and what
should an envious man do with gold?

14:4. He that gathereth together by wronging his own soul, gathereth
for others, and another will squander away his goods in rioting.

14:5. He that is evil to himself, to whom will he be good?  and he shall
not take pleasure in his goods.

14:6. There is none worse than he that envieth himself, and this is the
reward of his wickedness:

14:7. And if he do good, he doth it ignorantly, and unwillingly:  and at
the last he discovereth his wickedness.

14:8. The eye of the envious is wicked:  and he turneth away his face,
and despiseth his own soul.

14:9. The eye of the covetous man is insatiable in his portion of
iniquity:  he will not be satisfied till he consume his own soul, drying
it up.

14:10. An evil eye is towards evil things:  and he shall not have his
fill of bread, but shall be needy and pensive at his own table.

14:11. My son, if thou have any thing, do good to thyself, and offer to
God worthy offerings.

14:12. Remember that death is not slow, and that the covenant of hell
hath been shewn to thee:  for the covenant of this world shall surely
die.

Covenant of hell. . .The decree by which all are to go down to the
regions of death.

14:13. Do good to thy friend before thou die, and according to thy
ability, stretching out thy hand give to the poor.

14:14. Defraud not thyself of the good day, and let not the part of a
good gift overpass thee.

14:15. Shalt thou not leave to others to divide by lot thy sorrows and
labours?

14:16. Give and take, and justify thy soul.

14:17. Before thy death work justice:  for in hell there is no finding
food.

14:18. All flesh shall fade as grass, and as the leaf that springeth
out on a green tree.

14:19. Some grow, and some fall off:  so is the generation of flesh and
blood, one cometh to an end, and another is born.

14:20. Every work that is corruptible shall fail in the end:  and the
worker thereof shall go with it.

14:21. And every excellent work shall be justified:  and the worker
thereof shall be honoured therein.

14:22. Blessed is the man that shall continue in wisdom, and that shall
meditate in his justice, and in his mind shall think of the all seeing
eye of God.

14:23. He that considereth her ways in his heart, and hath
understanding in her secrets, who goeth after her as one that traceth,
and stayeth in her ways.

14:24. He who looketh in at her windows, and hearkeneth at her door.

14:25. He that lodgeth near her house, and fastening a pin in her walls
shall set up his tent high unto her, where good things shall rest in
his lodging for ever.

14:26. He shall set his children under her shelter, and shall lodge
under her branches:

14:27. He shall be protected under her covering from the heat, and
shall rest in her glory.



Ecclesiasticus Chapter 15


Wisdom embraceth them that fear God.  God is not the author of sin.

15:1. He that feareth God, will do good:  and he that possesseth
justice, shall lay hold on her,

15:2. And she will meet him as an honourable mother, and will receive
him as a wife married of a virgin.

15:3. With the bread of life and understanding, she shall feed him, and
give him the water of wholesome wisdom to drink:  and she shall be made
strong in him, and he shall not be moved.

15:4. And she shall hold him fast, and he shall not be confounded:  and
she shall exalt him among his neighbours.

15:5. And in the midst of the church she shall open his mouth, and
shall fill him with the spirit of wisdom and understanding, and shall
clothe him with a robe of glory.

15:6. She shall heap upon him a treasure of joy and gladness, and shall
cause him to inherit an everlasting name.

15:7. But foolish men shall not obtain her, and wise men shall meet
her, foolish men shall not see her:  for she is far from pride and
deceit.

15:8. Lying men shall be mindful of her:  but men that speak truth shall
be found with her, and shall advance, even till they come to the sight
of God.

15:9. Praise is not seemly in the mouth of a sinner:

15:10. For wisdom came forth from God:  for praise shall be with the
wisdom of God, and shall abound in a faithful mouth, and the sovereign
Lord will give praise unto it.

15:11. Say not:  It is through God, that she is not with me:  for do not
thou the things that he hateth.

15:12. Say not:  He hath caused me to err:  for he hath no need of wicked
men.

15:13. The Lord hateth all abomination of error, and they that fear him
shall not love it.

15:14. God made man from the beginning, and left him in the hand of his
own counsel.

15:15. He added his commandments and precepts.

15:16. If thou wilt keep the commandments and perform acceptable
fidelity for ever, they shall preserve thee.

15:17. He hath set water and fire before thee:  stretch forth thy hand
to which thou wilt.

15:18. Before man is life and death, good and evil, that which he shall
choose shall be given him:

15:19. For the wisdom of God is great, and he is strong in power,
seeing all men without ceasing.

15:20. The eyes of the Lord are towards them that fear him, and he
knoweth al the work of man.

15:21. He hath commanded no man to do wickedly, and he hath given no
man license to sin;

15:22. For he desireth not a multitude of faithless and unprofitable
children.



Ecclesiasticus Chapter 16


It is better to have none than many wicked children.  Of the justice and
mercy of God.  His ways are unsearchable.

16:1. Rejoice not in ungodly children, if they be multiplied:  neither
be delighted in them, if the fear of God be not with them.

16:2. Trust not to their life, and respect not their labours.

16:3. For better is one that feareth God, than a thousand ungodly
children.

16:4. And it is better to die without children, than to leave ungodly
children.

16:5. By one that is wise a country shall be inhabited, the tribe of
the ungodly shall become desolate.

16:6. Many such things hath my eyes seen, and greater things than these
my ear hath heard.

16:7. In the congregation of sinners a fire shall be kindled, and in an
unbelieving nation wrath shall flame out.

16:8. The ancient giants did not obtain pardon for their sins, who were
destroyed trusting to their own strength:

16:9. And he spared not the place where Lot sojourned, but abhorred
them for the pride of their word.

16:10. He had not pity on them, destroying the whole nation that
extolled themselves in their sins.

16:11. So did he with the six hundred thousand footmen, who were
gathered together in the hardness of their heart:  and if one had been
stiffnecked, it is a wonder if he had escaped unpunished:

Six hundred thousand footmen, etc. . .Viz., the children of Israel, whom
he sentenced to die in the wilderness.  Num. 14.

16:12. For mercy and wrath are with him.  He is mighty to forgive, and
to pour out indignation:

16:13. According as his mercy is, so his correction judgeth a man
according to his works.

16:14. The sinner shall not escape in his rapines, and the patience of
him that sheweth mercy shall not be put off.

16:15. All mercy shall make a place for every man according to the
merit of his works, and according to the wisdom of his sojournment.

16:16. Say not:  I shall be hidden from God, and who shall remember me
from on high?

16:17. In such a multitude I shall not be known:  for what is my soul in
such an immense creation?

16:18. Behold the heaven, and the heavens of heavens, the deep, and all
the earth, and the things that are in them, shall be moved in his
sight,

16:19. The mountains also, and the hills, and the foundations of the
earth:  when God shall look upon them, they shall be shaken with
trembling.

16:20. And in all these things the heart is senseless:  and every heart
is understood by him.

16:21. And his ways who shall understand, and the storm, which no eye
of man shall see?

16:22. For many of his works are hidden, but the works of his justice
who shall declare?  or who shall endure?  for the testament is far from
some, and the examination of all is in the end.

16:23. He that wanteth understanding thinketh vain things, and the
foolish, and erring man, thinketh foolish things.

16:24. Hearken to me, my son, and learn the discipline of
understanding, and attend to my words in thy heart.

16:25. And I will shew forth good doctrine in equity, and will seek to
declare wisdom:  and attend to my words in thy heart, whilst with equity
of spirit I tell thee the virtues that God hath put upon his works from
the beginning, and I shew forth in truth his knowledge.

16:26. The works of God are done in judgment from the beginning, and
from the making of them he distinguished their parts, and their
beginnings in their generations.

16:27. He beautified their works for ever, they have neither hungered,
nor laboured, and they have not ceased from their works.

16:28. Nor shall any of them straiten his neighbour at any time.

16:29. Be not thou incredulous to his word.

16:30. After this God looked upon the earth, and filled it with his
goods.

16:31. The soul of every living thing hath shewn forth before the face
thereof, and into it they return again.

Shewn forth. . .Viz., the glory and power of God upon the earth.



Ecclesiasticus Chapter 17


The creation and favour of God to man.  An exhortation to turn to God.

17:1. God created man of the earth, and made him after his own image.

17:2. And he turned him into it again, and clothed him with strength
according to himself.

17:3. He gave him the number of his days and time, and gave him power
over all things that are upon the earth.

17:4. He put the fear of him upon all flesh, and he had dominion over
beasts and fowls.

17:5. He created of him a helpmate like to himself, he gave them
counsel, and a tongue, and eyes, and ears, and a heart to devise:  and
he filled them with the knowledge of understanding.

17:6. He created in them the science of the spirit, he fired their
heart with wisdom, and shewed them both good and evil.

17:7. He set his eye upon their hearts to shew them the greatness of
his works:

17:8. That they might praise the name which he hath sanctified:  and
glory in his wondrous act that they might declare the glorious things
of his works.

17:9. Moreover he gave them instructions, and the law of life for an
inheritance.

17:10. He made an everlasting covenant with them, and he shewed them
his justice and judgments.

17:11. And their eye saw the majesty of his glory, and their ears heard
his glorious voice, and he said to them:  Beware of all iniquity.

Their eye saw, etc. . .Viz., when he gave the law on mount Sinai.

17:12. And he gave to every one of them commandment concerning his
neighbour.

17:13. Their ways are always before him, they are not hidden from his
eyes.

17:14. Over every nation he set a ruler.

17:15. And Israel was made the manifest portion of God.

17:16. And all their works are as the sun in the sight of God:  and his
eyes are continually upon their ways.

17:17. Their covenants were not hid by their iniquity, and all their
iniquities are in the sight of God.

17:18. The alms of a man is as a signet with him, and shall preserve
the grace of a man as the apple of the eye:

17:19. And afterward he shall rise up, and shall render them their
reward, to every one upon their own head, and shall turn them down into
the bowels of the earth.

17:20. But to the penitent he hath given the way of justice, and he
hath strengthened them that were fainting in patience, and hath
appointed to them the lot of truth.

17:21. Turn to the Lord, and forsake thy sins:

17:22. Make thy prayer before the face of the Lord, and offend less.

Offend less. . .Minue offendicula.  That is, remove sins and the
occasions of sins.

17:23. Return to the Lord, and turn away from thy injustice, and
greatly hate abomination.

17:24. And know the justices and judgments of God, and stand firm in
the lot set before thee, and in prayer to the most high God.

17:25. Go to the side of the holy age, with them that live and give
praise to God.

Go to the side, etc. . .Fly from the side of Satan and sin, and join
with the holy ones, that follow God and godliness.

17:26. Tarry not in the error of the ungodly, give glory before death.
Praise perisheth from the dead as nothing.

17:27. Give thanks whilst thou art living, whilst thou art alive and in
health thou shalt give thanks, and shalt praise God, and shalt glory in
his mercies.

17:28. How great is the mercy of the Lord, and his forgiveness to them
that turn to him !

17:29. For all things cannot be in men, because the son of man is not
immortal, and they are delighted with the vanity of evil.

17:30. What is brighter than the sun; yet it shall be eclipsed.  Or what
is more wicked than that which flesh and blood hath invented?  and this
shall be reproved.

17:31. He beholdeth the power of the height of heaven:  and all men are
earth and ashes.



Ecclesiasticus Chapter 18


God's works are wonderful:  we must serve him, and not our lusts.

18:1. He that liveth for ever created all things together.  God only
shall be justified, and he remaineth an invincible king for ever.

18:2. Who is able to declare his works?

18:3. For who shall search out his glorious acts?

18:4. And who shall show forth the power of his majesty?  or who shall
be able to declare his mercy?

18:5. Nothing may be taken away, nor added, neither is it possible to
find out the glorious works of God.

18:6. When a man hath done, then shall he begin:  and when he leaveth
off, he shall be at a loss.

Then shall he begin. . .God is so great and incomprehensible, that when
man has done all that he can to find out his greatness and boundless
perfections, he is still to begin:  for what he has found out, is but a
mere nothing in comparison with his infinity.

18:7. What is man, and what is his grace?  and what is his good, or what
is his evil?

18:8. The number of the days of men at the most are a hundred years, as
a drop of water of the sea are they esteemed:  and as a pebble of the
sand, so are a few years compared to eternity.

18:9. Therefore God is patient in them, and poureth forth his mercy
upon them.

18:10. He hath seen the presumption of their heart that it is wicked,
and hath known their end that it is evil.

18:11. Therefore hath he filled up his mercy in their favour, and hath
shewn them the way of justice.

18:12. The compassion of man is toward his neighbour:  but the mercy of
God is upon all flesh.

18:13. He hath mercy, and teacheth, and correcteth, as a shepherd doth
his flock.

18:14. He hath mercy on him that receiveth the discipline of mercy, and
that maketh haste in his judgments.

18:15. My son, in thy good deeds, make no complaint, and when thou
givest any thing, add not grief by an evil word.

18:16. Shall not the dew assuage the heat?  so also the good word is
better than the gift.

18:17. Lo, is not a word better than a gift?  but both are with a
justified man.

18:18. A fool will upbraid bitterly:  and a gift of one ill taught
consumeth the eyes.

18:19. Before judgment prepare thee justice, and learn before thou
speak.

18:20. Before sickness take a medicine, and before judgment examine
thyself, and thou shalt find mercy in the sight of God.

18:21. Humble thyself before thou art sick, and in the time of sickness
shew thy conversation.

18:22. Let nothing hinder thee from praying always, and be not afraid
to be justified even to death:  for the reward of God continueth for
ever.

18:23. Before prayer prepare thy soul:  and be not as a man that
tempteth God.

18:24. Remember the wrath that shall be at the last day, and the time
of repaying when he shall turn away his face.

18:25. Remember poverty in the time of abundance, and the necessities
of poverty in the day of riches.

18:26. From the morning until the evening the time shall be changed,
and all these are swift in the eyes of God.

18:27. A wise man will fear in every thing, and in the days of sins
will beware of sloth.

18:28. Every man of understanding knoweth wisdom, and will give praise
to him that findeth her.

18:29. They that were of good understanding in words, have also done
wisely themselves:  and have understood truth and justice, and have
poured forth proverbs and judgments.

18:30. Go not after thy lusts, but turn away from thy own will.

18:31. If thou give to thy soul her desires, she will make thee a joy
to thy enemies.

18:32. Take no pleasure in riotous assemblies, be they ever so small:
for their concertation is continual.

18:33. Make not thyself poor by borrowing to contribute to feasts when
thou hast nothing in thy purse:  for thou shalt be an enemy to thy own
life.



Ecclesiasticus Chapter 19


Admonition against sundry vices.

19:1. A workman that is a drunkard shall not be rich:  and he that
contemneth small things, shall fall by little and little.

19:2. Wine and women make wise men fall off, and shall rebuke the
prudent:

19:3. And he that joineth himself to harlots, will be wicked.
Rottenness and worms shall inherit him, and he shall be lifted up for a
greater example, and his soul shall be taken away out of the number.

19:4. He that is hasty to give credit, is light of heart, and shall be
lessened:  and he that sinneth against his own soul, shall be despised.

19:5. He that rejoiceth in iniquity, shall be censured, and he that
hateth chastisement, shall have less life:  and he that hateth babbling,
extinguisheth evil.

19:6. He that sinneth against his own soul, shall repent:  and he that
is delighted with wickedness, shall be condemned.

19:7. Rehearse not again a wicked and harsh word, and thou shalt not
fare the worse.

19:8. Tell not thy mind to friend or foe:  and if there be a sin with
thee, disclose it not.

19:9. For he will hearken to thee, and will watch thee, and as it were
defending thy sin he will hate thee, and so will he be with thee
always.

19:10. Hast thou heard a word against thy neighbour?  let it die within
thee, trusting that it will not burst thee.

19:11. At the hearing of a word the fool is in travail, as a woman
groaning in the bringing forth a child.

19:12. As an arrow that sticketh in a man's thigh:  so is a word in the
heart of a fool.

19:13. Reprove a friend, lest he may not have understood, and say:  I
did it not:  or if he did it, that he may do it no more.

19:14. Reprove thy neighbour, for it may be he hath not said it:  and if
he hath said it, that he may not say it again.

19:15. Admonish thy friend:  for there is often a fault committed.

19:16. And believe not every word.  There is one, that slippeth with the
tongue, but not from his heart.

19:17. For who is there that hath not offended with his tongue?
Admonish thy neighbour before thou threaten him.

19:18. And give place to the fear of the most High:  for the fear of God
is all wisdom, and therein is to fear God, and the disposition of the
law is in all wisdom.

19:19. But the learning of wickedness is not wisdom:  and the device of
sinners is not prudence.

19:20. There is a subtle wickedness, and the same is detestable:  and
there is a man that is foolish, wanting in wisdom.

19:21. Better is a man that hath less wisdom, and wanteth
understanding, with the fear of God, than he that aboundeth in
understanding, and transgresseth the law of the most High.

19:22. There is an exquisite subtilty, and the same is unjust.

19:23. And there is one that uttereth an exact word telling the truth.
There is one that humbleth himself wickedly, and his interior is full
of deceit:

19:24. And there is one that submitteth himself exceedingly with a
great lowliness:  and there is one that casteth down his countenance,
and maketh as if he did not see that which is unknown:

19:25. And if he be hindered from sinning for want of power, if he
shall find opportunity to do evil, he will do it.

19:26. A man is known by his look, and a wise man, when thou meetest
him, is known by his countenance.

19:27. The attire of the body, and the laughter of the teeth, and the
gait of the man, shew what he is.

19:28. There is a lying rebuke in the anger of an injurious man:  and
there is a judgment that is not allowed to be good:  and there is one
that holdeth his peace, he is wise.



Ecclesiasticus Chapter 20


Rules with regard to correction, discretion, and avoiding lies.

20:1. How much better is it to reprove, than to be angry, and not to
hinder him that confesseth in prayer.

20:2. The lust of an eunuch shall deflour a young maiden:

20:3. So is he that by violence executeth of the unwise.

20:4. How good is it, when thou art reproved, to shew repentance! for
so thou shalt escape wilful sin.

20:5. There is one that holdeth his peace, that is found wise:  and
there is another that is hateful, that is bold in speech.

20:6. There is one that holdeth his peace, because he knoweth not what
to say:  and there is another that holdeth his peace, knowing the proper
time.

20:7. A wise man will hold his peace till he see opportunity:  but a
babbler, and a fool, will regard no time.

20:8. He that useth many words shall hurt his own soul:  and he that
taketh authority to himself unjustly shall be hated.

20:9. There is success in evil things to a man without discipline, and
there is a finding that turneth to loss.

20:10. There is a gift that is not profitable:  and there is a gift, the
recompense of which is double.

20:11. There is an abasement because of glory:  and there is one that
shall lift up his head from a low estate.

20:12. There is that buyeth much for a small price, and restoreth the
same sevenfold.

20:13. A man wise in words shall make himself beloved:  but the graces
of fools shall be poured out.

20:14. The gift of the fool shall do thee no good:  for his eyes are
sevenfold.

20:15. He will give a few things, and upbraid much:  and the opening of
his mouth is the kindling of a fire.

20:16. To day a man lendeth, and to morrow he asketh it again:  such a
man as this is hateful.

20:17. A fool shall have no friend, and there shall be no thanks for
his good deeds.

20:18. For they that eat his bread, are of a false tongue.  How often,
and how many will laugh him to scorn!

20:19. For he doth not distribute with right understanding that which
was to be had:  in like manner also that which was not to be had.

20:20. The slipping of a false tongue is as one that falleth on the
pavement:  so the fall of the wicked shall come speedily.

20:21. A man without grace is as a vain fable, it shall be continually
in the mouth of the unwise.

20:22. A parable coming out of a fool's mouth shall be rejected:  for he
doth not speak it in due season.

20:23. There is that is hindered from sinning through want, and in his
rest he shall be pricked.

20:24. There is that will destroy his own soul through shamefacedness,
and by occasion of an unwise person he will destroy it:  and by respect
of person he will destroy himself.

20:25. There is that for bashfulness promiseth to his friend, and
maketh him his enemy for nothing.

20:26. A lie is a foul blot in a man, and yet it will be continually in
the mouth of men without discipline.

20:27. A thief is better than a man that is always lying:  but both of
them shall inherit destruction.

20:28. The manners of lying men are without honour:  and their confusion
is with them without ceasing.

20:29. A wise man shall advance himself with his words, and a prudent
man shall please the great ones.

20:30. He that tilleth his land shall make a high heap of corn:  and he
that worketh justice shall be exalted:  and he that pleaseth great men
shall escape iniquity.

20:31. Presents and gifts blind the eyes of judges, and make them dumb
in the mouth, so that they cannot correct.

20:32. O Wisdom that is hid, and treasure that is not seen:  what profit
is there in them both?

20:33. Better is he that hideth his folly, than the man that hideth his
wisdom.



Ecclesiasticus Chapter 21


Cautions against sin in general, and some sins in particular.

21:1. My son, hast thou sinned?  do so no more:  but for thy former sins
also pray that they may be forgiven thee.

21:2. Flee from sins as from the face of a serpent:  for if thou comest
near them, they will take hold of thee.

21:3. The teeth thereof are the teeth of a lion, killing the souls of
men.

21:4. All iniquity is like a two-edged sword, there is no remedy for
the wound thereof.

21:5. Injuries and wrongs will waste riches:  and the house that is very
rich shall be brought to nothing by pride:  so the substance of the
proud shall be rooted out.

21:6. The prayer out of the mouth of the poor shall reach the ears of
God, and judgment shall come for him speedily.

21:7. He that hateth to be reproved walketh in the trace of a sinner:
and he that feareth God will turn to his own heart.

21:8. He that is mighty by a bold tongue is known afar off, but a wise
man knoweth to slip by him.

21:9. He that buildeth his house at other men's charges, is as he that
gathereth himself stones to build in the winter.

21:10. The congregation of sinners is like tow heaped together, and the
end of them is a flame of fire.

21:11. The way of sinners is made plain with stones, and in their end
is hell, and darkness, and pains.

21:12. He that keepeth justice shall get the understanding thereof.

21:13. The perfection of the fear of God is wisdom and understanding.

21:14. He that is not wise in good, will not be taught.

21:15. But there is a wisdom that aboundeth in evil:  and there is no
understanding where there is bitterness.

21:16. The knowledge of a wise man shall abound like a flood, and his
counsel continueth like a fountain of life.

21:17. The heart of a fool is like a broken vessel, and no wisdom at
all shall it hold.

21:18. A man of sense will praise every wise word he shall hear, and
will apply it to himself:  the luxurious man hath heard it, and it shall
displease him, and he will cast it behind his back.

21:19. The talking of a fool is like a burden in the way:  but in the
lips of the wise, grace shall be found.

21:20. The mouth of the prudent is sought after in the church, and they
will think upon his words in their hearts.

21:21. As a house that is destroyed, so is wisdom to a fool:  and the
knowledge of the unwise is as words without sense.

21:22. Doctrine to a fool is as fetters on the feet, and like manacles
on the right hand.

21:23. A fool lifteth up his voice in laughter:  but a wise man will
scarce laugh low to himself.

21:24. Learning to the prudent is as an ornament of gold, and like a
bracelet upon his right arm.

21:25. The foot of a fool is soon in his neighbour's house:  but a man
of experience will be abashed at the person of the mighty.

21:26. A fool will peep through the window into the house:  but he that
is well taught will stand without.

21:27. It is the folly of a man to hearken at the door:  and a wise man
will be grieved with the disgrace.

21:28. The lips of the unwise will be telling foolish things:  but the
words of the wise shall be weighed in a balance.

21:29. The heart of fools is in their mouth:  and the mouth of wise men
is in their heart.

21:30. While the ungodly curseth the devil, he curseth his own soul.

While the ungodly, etc. . .He condemneth and curseth himself:  inasmuch
as by sin he takes part with the devil, and is, as it were, his member
and subject.

21:31. The talebearer shall defile his own soul, and shall be hated by
all:  and he that shall abide with him shall be hateful:  the silent and
wise man shall be honoured.



Ecclesiasticus Chapter 22


Wise sayings on divers subjects.

22:1. The sluggard is pelted with a dirty stone, and all men will speak
of his disgrace.

22:2. The sluggard is pelted with the dung of oxen:  and every one that
toucheth him will shake his hands.

22:3. A son ill taught is the confusion of the father:  and a foolish
daughter shall be to his loss.

22:4. A wise daughter shall bring an inheritance to her husband:  but
she that confoundeth, becometh a disgrace to her father.

22:5. She that is bold shameth both her father and husband, and will
not be inferior to the ungodly:  and shall be disgraced by them both.

22:6. A tale out of time is like music in mourning:  but the stripes and
instruction of wisdom are never out of time.

22:7. He that teacheth a fool, is like one that glueth a potsherd
together.

22:8. He that telleth a word to him that heareth not, is like one that
waketh a man out of a deep sleep.

22:9. He speaketh with one that is asleep, who uttereth wisdom to a
fool:  and in the end of the discourse he saith:  Who is this?

22:10. Weep for the dead, for his light hath failed:  and weep for the
fool, for his understanding faileth.

For the fool. . .In the language of the Holy Ghost, he is styled a fool,
that turns away from God to follow vanity and sin.  And what is said by
the wise man against fools is meant of such fools as these.

22:11. Weep but a little for the dead, for he is at rest.

22:12. For the wicked life of a wicked fool is worse than death.

22:13. The mourning for the dead is seven days:  but for a fool and an
ungodly man all the days of their life.

22:14. Talk not much with a fool and go not with him that hath no
sense.

22:15. Keep thyself from him, that thou mayst not have trouble, and
thou shalt not be defiled with his sin.

22:16. Turn away from him, and thou shalt find rest, and shalt not be
wearied out with his folly.

22:17. What is heavier than lead?  and what other name hath he but fool?

22:18. Sand and salt, and a mass of iron is easier to bear, than a man
without sense, that is both foolish and wicked.

22:19. A frame of wood bound together in the foundation of a building,
shall not be loosed:  so neither shall the heart that is established by
advised counsel.

22:20. The thought of him that is wise at all times, shall not be
depraved by fear.

22:21. As pales set in high places, and plasterings made without cost,
will not stand against the face of the wind:

22:22. So also a fearful heart in the imagination of a fool shall not
resist against the violence of fear.

22:23. As a fearful heart in the thought of a fool at all times will
not fear, so neither shall he that continueth always in the
commandments of God.

22:24. He that pricketh the eye, bringeth out tears:  and he that
pricketh the heart, bringeth forth resentment.

22:25. He that flingeth a stone at birds, shall drive them away:  so he
that upbraideth his friend, breaketh friendship.

22:26. Although thou hast drawn a sword at a friend, despair not:  for
there may be a returning.  To a friend,

22:27. If thou hast opened a sad mouth, fear not, for there may be a
reconciliation:  except upbraiding, and reproach, and pride, and
disclosing of secrets, or a treacherous wound:  for in all these cases a
friend will flee away.

22:28. Keep fidelity with a friend in his poverty, that in his
prosperity also thou mayst rejoice.

22:29. In the time of his trouble continue faithful to him, that thou
mayst also be heir with him in his inheritance.

22:30. As the vapour of a chimney, and the smoke of the fire goeth up
before the fire:  so also injurious words, and reproaches, and threats,
before blood.

22:31. I will not be ashamed to salute a friend, neither will I hide
myself from his face:  and if any evil happen to me by him, I will bear
it.

22:32. But every one that shall hear it, will beware of him.

22:33. Who will set a guard before my mouth, and a sure seal upon my
lips, that I fall not by them, and that my tongue destroy me not?



Ecclesiasticus Chapter 23


A prayer for grace to flee sin:  cautions against profane swearing and
other vices.

23:1. O Lord, father, and sovereign ruler of my life, leave me not to
their counsel:  nor suffer me to fall by them.

By them. . .Viz., the tongue and the lips, mentioned in the last verse
of the foregoing chapter.

23:2. Who will set scourges over my thoughts, and the discipline of
wisdom over my heart, that they spare me not in their ignorances, and
that their sins may not appear:

That they spare me not in their ignorances, etc. . .That is, that the
scourges and discipline of wisdom may restrain the ignorances, that is,
the slips and offences which are usually committed by the tongue and
the lips.

23:3. Lest my ignorances increase, and my offences be multiplied, and
my sins abound, and I fall before my adversaries, and my enemy rejoice
over me?

23:4. O Lord, father, and God of my life, leave me not to their
devices.

23:5. Give me not haughtiness of my eyes, and turn away from me all
coveting.

23:6. Take from me the greediness of the belly, and let not the lusts
of the flesh take hold of me, and give me not over to a shameless and
foolish mind.

23:7. Hear, O ye children, the discipline of the mouth, and he that
will keep it shall not perish by his lips, nor be brought to fall into
most wicked works.

23:8. A sinner is caught in his own vanity, and the proud and the evil
speakers shall fall thereby.

23:9. Let not thy mouth be accustomed to swearing:  for in it there are
many falls.

23:10. And let not the naming of God be usual in thy mouth, and meddle
not with the names of saints, for thou shalt not escape free from them.

23:11. For as a slave daily put to the question, is never without a
blue mark:  so every one that sweareth, and nameth, shall not be wholly
pure from sin.

23:12. A man that sweareth much, shall be filled with iniquity, and a
scourge shall not depart from his house.

23:13. And if he make it void, his sin shall be upon him, and if he
dissemble it, he offendeth double:

23:14. And if he swear in vain, he shall not be justified:  for his
house shall be filled with his punishment.

23:15. There is also another speech opposite to death, let it not be
found in the inheritance of Jacob.

23:16. For from the merciful all these things shall be taken away, and
they shall not wallow in sins.

23:17. Let not thy mouth be accustomed to indiscreet speech:  for
therein is the word of sin.

23:18. Remember thy father and thy mother, for thou sittest in the
midst of great men:

23:19. Lest God forget thee in their sight, and thou, by thy daily
custom be infatuated and suffer reproach:  and wish that thou hadst not
been born, and curse the day of thy nativity.

23:20. The man that is accustomed to opprobrious words, will never be
corrected all the days of his life.

23:21. Two sorts of men multiply sins, and the third bringeth wrath and
destruction.

23:22. A hot soul is a burning fire, it will never be quenched, till it
devour some thing.

23:23. And a man that is wicked in the mouth of his flesh, will not
leave off till he hath kindled a fire.

23:24. To a man that is a fornicator all bread is sweet, he will not be
weary of sinning unto the end.

23:25. Every man that passeth beyond his own bed, despising his own
soul, and saying:  Who seeth me?

23:26. Darkness compasseth me about, and the walls cover me, and no man
seeth me:  whom do I fear?  the most High will not remember my sins.

23:27. And he understandeth not that his eye seeth all things, for such
a man's fear driveth him from the fear of God, and the eyes of men
fearing him:

23:28. And he knoweth not that the eyes of the Lord are far brighter
than the sun, beholding round about all the ways of men, and the bottom
of the deep, and looking into the hearts of men, into the most hidden
parts.

23:29. For all things were known to the Lord God, before they were
created:  so also after they were perfected he beholdeth all things.

23:30. This man shall be punished in the streets of the city, and he
shall be chased as a colt:  and where he suspected not, he shall be
taken.

23:31. And he shall be in disgrace with all men, because he understood
not the fear of the Lord.

23:32. So every woman also that leaveth her husband, and bringeth in an
heir by another:

23:33. For first she hath been unfaithful to the law of the most High:
and secondly, she hath offended against her husband:  thirdly, she hath
fornicated in adultery, and hath gotten her children of another man.

23:34. This woman shall be brought into the assembly, and inquisition
shall be made of her children.

23:35. Her children shall not take root, and her branches shall bring
forth no fruit.

23:36. She shall leave her memory to be cursed, and her infamy shall
not be blotted out.

23:37. And they that remain shall know, that there is nothing better
than the fear of God:  and that there is nothing sweeter than to have
regard to the commandments of the Lord.

23:38. It is great glory to follow the Lord:  for length of days shall
be received from him.



Ecclesiasticus Chapter 24


Wisdom praiseth herself:  her origin, her dwelling, her dignity, and her
fruits.

24:1. Wisdom shall praise her own self, and shall be honoured in God,
and shall glory in the midst of her people,

24:2. And shall open her mouth in the churches of the most High, and
shall glorify herself in the sight of his power,

24:3. And in the midst of her own people she shall be exalted, and
shall be admired in the holy assembly.

24:4. And in the multitude of the elect she shall have praise, and
among the blessed she shall be blessed, saying:

24:5. I came out of the mouth of the most High, the firstborn before
all creatures:

24:6. I made that in the heavens there should rise light that never
faileth, and as a cloud I covered all the earth:

24:7. I dwelt in the highest places, and my throne is in a pillar of a
cloud.

24:8. I alone have compassed the circuit of heaven, and have penetrated
into the bottom of the deep, and have walked in the waves of the sea,

24:9. And have stood in all the earth:  and in every people,

24:10. And in every nation I have had the chief rule:

24:11. And by my power I have trodden under my feet the hearts of all
the high and low:  and in all these I sought rest, and I shall abide in
the inheritance of the Lord.

24:12. Then the creator of all things commanded, and said to me:  and he
that made me, rested in my tabernacle,

24:13. And he said to me:  Let thy dwelling be in Jacob, and thy
inheritance in Israel, and take root in my elect.

24:14. From the beginning, and before the world, was I created, and
unto the world to come I shall not cease to be, and in the holy
dwelling place I have ministered before him.

24:15. And so was I established in Sion, and in the holy city likewise
I rested, and my power was in Jerusalem.

24:16. And I took root in an honourable people, and in the portion of
my God his inheritance, and my abode is in the full assembly of saints.

24:17. I was exalted like a cedar in Libanus, and as a cypress tree on
mount Sion.

24:18. I was exalted like a palm tree in Cades, and as a rose plant in
Jericho:

24:19. As a fair olive tree in the plains, and as a plane tree by the
water in the streets, was I exalted.

24:20. I gave a sweet smell like cinnamon, and aromatical balm:  I
yielded a sweet odour like the best myrrh:

24:21. And I perfumed my dwelling as storax, and galbanum, and onyx,
and aloes, and as the frankincense not cut, and my odour is as the
purest balm.

24:22. I have stretched out my branches as the turpentine tree, and my
branches are of honour and grace.

24:23. As the vine I have brought forth a pleasant odour:  and my
flowers are the fruit of honour and riches.

24:24. I am the mother of fair love, and of fear, and of knowledge, and
of holy hope.

24:25. In me is all grace of the way and of the truth, in me is all
hope of life and of virtue.

24:26. Come over to me, all ye that desire me, and be filled with my
fruits.

24:27. For my spirit is sweet above honey, and my inheritance above
honey and the honeycomb.

24:28. My memory is unto everlasting generations.

24:29. They that eat me, shall yet hunger:  and they that drink me,
shall yet thirst.

24:30. He that hearkeneth to me, shall not be confounded:  and they that
work by me, shall not sin.

24:31. They that explain me shall have life everlasting.

24:32. All these things are the book of life, and the covenant of the
most High, and the knowledge of truth.

24:33. Moses commanded a law in the precepts of justices, and an
inheritance to the house of Jacob, and the promises to Israel.

24:34. He appointed to David his servant to raise up of him a most
mighty king, and sitting on the throne of glory for ever.

A most mighty king. . .Viz., Christ, who by his gospel, like an
overflowing river, has enriched the earth with heavenly wisdom.

24:35. Who filleth up wisdom as the Phison, and as the Tigris in the
days of the new fruits.

24:36. Who maketh understanding to abound as the Euphrates, who
multiplieth it as the Jordan in the time of harvest.

24:37. Who sendeth knowledge as the light, and riseth up as Gehon in
the time of the vintage.

24:38. Who first hath perfect knowledge of her, and a weaker shall not
search her out.

Who first hath perfect knowledge of her. . .Christ was the first that
had perfect knowledge of heavenly wisdom.

24:39. For her thoughts are more vast than the sea, and her counsels
more deep than the great ocean.

24:40. I, wisdom, have poured out rivers.

24:41. I, like a brook out of a river of a mighty water; I, like a
channel of a river, and like an aqueduct, came out of paradise.

24:42. I said:  I will water my garden of plants, and I will water
abundantly the fruits of my meadow.

24:43. And behold my brook became a great river, and my river came near
to a sea:

24:44. For I make doctrine to shine forth to all as the morning light,
and I will declare it afar off.

24:45. I will penetrate to all the lower parts of the earth, and will
behold all that sleep, and will enlighten all that hope in the Lord.

24:46. I will yet pour out doctrine as prophecy, and will leave it to
them that seek wisdom, and will not cease to instruct their offspring
even to the holy age.

24:47. See ye that I have not laboured myself only, but for all that
seek out the truth.



Ecclesiasticus Chapter 25


Documents of wisdom on several subjects.

25:1. With three things my spirit is pleased, which are approved before
God and men:

25:2. The concord of brethren, and the love of neighbours, and man and
wife that agree well together.

25:3. Three sorts my soul hateth, and I am greatly grieved at their
life:

25:4. A poor man that is proud:  a rich man that is a liar:  an old man
that is a fool, and doting.

25:5. The things that thou hast not gathered in thy youth, how shalt
thou find them in thy old age?

25:6. O how comely is judgment for a grey head, and for ancients to
know counsel!

25:7. O how comely is wisdom for the aged, and understanding and
counsel to men of honour!

25:8. Much experience is the crown of old men, and the fear of God is
their glory.

25:9. Nine things that are not to be imagined by the heart have I
magnified, and the tenth I will utter to men with my tongue.

25:10. A man that hath joy of his children:  and he that liveth and
seeth the fall of his enemies.

25:11. Blessed is he that dwelleth with a wise woman, and that hath not
slipped with his tongue, and that hath not served such as are unworthy
of him.

25:12. Blessed is he that findeth a true friend, and that declareth
justice to an ear that heareth.

25:13. How great is he that findeth wisdom and knowledge! but there is
none above him that feareth the Lord.

25:14. The fear of God hath set itself above all things:

25:15. Blessed is the man, to whom it is given to have the fear of God:
he that holdeth it, to whom shall he be likened?

25:16. The fear of God is the beginning of his love:  and the beginning
of faith is to be fast joined unto it.

25:17. The sadness of the heart is every plague:  and the wickedness of
a woman is all evil.

25:18. And a man will choose any plague, but the plague of the heart:

25:19. And any wickedness, but the wickedness of a woman:

25:20. And any affliction, but the affliction from them that hate him:

25:21. And any revenge, but the revenge of enemies.

25:22. There is no head worse than the head of a serpent:

25:23. And there is no anger above the anger of a woman.  It will be
more agreeable to abide with a lion and a dragon, than to dwell with a
wicked woman.

25:24. The wickedness of a woman changeth her face:  and she darkeneth
her countenance as a bear:  and sheweth it like sackcloth.  In the midst
of her neighbours,

25:25. Her husband groaned, and hearing he sighed a little.

25:26. All malice is short to the malice of a woman, let the lot of
sinners fall upon her.

25:27. As the climbing of a sandy way is to the feet of the aged, so is
a wife full of tongue to a quiet man.

25:28. Look not upon a woman's beauty, and desire not a woman for
beauty.

25:29. A woman's anger, and impudence, and confusion is great.

25:30. A woman, if she have superiority, is contrary to her husband.

25:31. A wicked woman abateth the courage, and maketh a heavy
countenance, and a wounded heart.

25:32. Feeble hands, and disjointed knees, a woman that doth not make
her husband happy.

25:33. From the woman came the beginning of sin, and by her we all die.

25:34. Give no issue to thy water, no, not a little:  nor to a wicked
woman liberty to gad abroad.

25:35. If she walk not at thy hand, she will confound thee in the sight
of thy enemies.

25:36. Cut her off from thy flesh, lest she always abuse thee.



Ecclesiasticus Chapter 26


Of good and bad women.

26:1. Happy is the husband of a good wife:  for the number of his years
is double.

26:2. A virtuous woman rejoiceth her husband, and shall fulfil the
years of his life in peace.

26:3. A good wife is a good portion, she shall be given in the portion
of them that fear God, to a man for his good deeds.

26:4. Rich or poor, if his heart is good, his countenance shall be
cheerful at all times.

26:5. Of three things my heart hath been afraid, and at the fourth my
face hath trembled:

26:6. The accusation of a city, and the gathering together of the
people:

26:7. And a false calumny, all are more grievous than death.

26:8. A jealous woman is the grief and mourning of the heart.

26:9. With a jealous woman is a scourge of the tongue which
communicateth with all.

26:10. As a yoke of oxen that is moved to and fro, so also is a wicked
woman:  he that hath hold of her, is as he that taketh hold of a
scorpion.

26:11. A drunken woman is a great wrath:  and her reproach and shame
shall not be hid.

26:12. The fornication of a woman shall be known by the haughtiness of
her eyes and by her eyelids.

26:13. On a daughter that turneth not away herself, set a strict watch:
lest finding an opportunity she abuse herself.

26:14. Take heed of the impudence of her eyes, and wonder not if she
slight thee.

26:15. She will open her mouth as a thirsty traveller to the fountain,
and will drink of every water near her, and will sit down by every
hedge, and open her quiver against every arrow, until she fail.

26:16. The grace of a diligent woman shall delight her husband, and
shall fat his bones.

26:17. Her discipline is the gift of God.

26:18. Such is a wise and silent woman, and there is nothing so much
worth as a well instructed soul.

26:19. A holy and shamefaced woman is grace upon grace.

26:20. And no price is worthy of a continent soul.

26:21. As the sun when it riseth to the world in the high places of
God, so is the beauty of a good wife for the ornament of her house.

26:22. As the lamp shining upon the holy candlestick, so is the beauty
of the face in a ripe age,

26:23. As golden pillars upon bases of silver, so are the firm feet
upon the soles of a steady woman.

26:24. As everlasting foundations upon a solid rock, so the
commandments of God in the heart of a holy woman.

26:25. At two things my heart is grieved, and the third bringeth anger
upon me.

26:26. A man of war fainting through poverty, and a man of sense
despised:

26:27. And he that passeth over from justice to sin, God hath prepared
such an one for the sword.

26:28. Two sorts of callings have appeared to me hard and dangerous:  a
merchant is hardly free from negligence:  and a huckster shall not be
justified from the sins of the lips.

From negligence. . .That is, from the neglect of the service of God:
because the eager pursuit of the mammon of this world, is apt to make
men of that calling forget the great duties of loving God above all
things, and their neighbours as themselves.--Ibid.  A huckster. . .Or, a
retailer of wine.  Men of that profession are both greatly exposed to
danger of sin themselves, and are too often accessary to the sins of
others.



Ecclesiasticus Chapter 27


Dangers of sin from several heads:  the fear of God is the best
preservative.  He that diggeth a pit, shall fall into it.

27:1. Through poverty many have sinned:  and he that seeketh to be
enriched, turneth away his eye.

27:2. As a stake sticketh fast in the midst of the joining of stones,
so also in the midst of selling and buying, sin shall stick fast.

27:3. Sin shall be destroyed with the sinner.

27:4. Unless thou hold thyself diligently in the fear of the Lord, thy
house shall quickly be overthrown.

27:5. As when one sifteth with a sieve, the dust will remain:  so will
the perplexity of a man in his thoughts.

27:6. The furnace trieth the potter's vessels, and the trial of
affliction just men.

27:7. As the dressing of a tree sheweth the fruit thereof, so a word
out of the thought of the heart of man.

27:8. Praise not a man before he speaketh, for this is the trial of
men.

27:9. If thou followest justice, thou shalt obtain her:  and shalt put
her on as a long robe of honour, and thou shalt dwell with her:  and she
shall protect thee for ever, and in the day of acknowledgment thou
shalt find a strong foundation.

27:10. Birds resort unto their like:  so truth will return to them that
practise her.

27:11. The lion always lieth in wait for prey:  so do sins for them that
work iniquities.

27:12. A holy man continueth in wisdom as the sun:  but a fool is
changed as the moon.

27:13. In the midst of the unwise keep in the word till its time:  but
be continually among men that think.

27:14. The discourse of sinners is hateful, and their laughter is at
the pleasures of sin.

27:15. The speech that sweareth much shall make the hair of the head
stand upright:  and its irreverence shall make one stop his ears.

27:16. In the quarrels of the road is the shedding of blood:  and their
cursing is a grievous hearing.

27:17. He that discloseth the secret of a friend loseth his credit, and
shall never find a friend to his mind.

27:18. Love thy neighbour, and be joined to him with fidelity.

27:19. But if thou discover his secrets, follow no more after him.

27:20. For as a man that destroyeth his friend, so is he that
destroyeth the friendship of his neighbour.

27:21. And as one that letteth a bird go out of his hand, so hast thou
let thy neighbour go, and thou shalt not get him again.

27:22. Follow after him no more, for he is gone afar off, he is fled,
as a roe escaped out of the snare because his soul is wounded.

27:23. Thou canst no more bind him up.  And of a curse there is
reconciliation:

And of a curse there is reconciliation. . .That is, it is easier to
obtain a reconciliation after a curse, than after disclosing a secret.

27:24. But to disclose the secrets of a friend, leaveth no hope to an
unhappy soul.

27:25. He that winketh with the eye forgeth wicked things, and no man
will cast him off:

27:26. In the sight of thy eyes he will sweeten his mouth, and will
admire thy words:  but at the last he will writhe his mouth, and on thy
words he will lay a stumblingblock.

27:27. I have hated many things but not like him, and the Lord will
hate him.

27:28. If one cast a stone on high, it will fall upon his own head:  and
the deceitful stroke will wound the deceitful.

27:29. He that diggeth a pit, shall fall into it:  and he that setteth a
stone for his neighbour, shall stumble upon it:  and he that layeth a
snare for another, shall perish in it.

27:30. A mischievous counsel shall be rolled back upon the author, and
he shall not know from whence it cometh to him.

27:31. Mockery and reproach are of the proud, and vengeance as a lion
shall lie in wait for him.

27:32. They shall perish in a snare that are delighted with the fall of
the just:  and sorrow shall consume them before they die.

27:33. Anger and fury are both of them abominable, and the sinful man
shall be subject to them.



Ecclesiasticus Chapter 28


Lessons against revenge and quarrels.  The evils of the tongue.

28:1. He that seeketh to revenge himself, shall find vengeance from the
Lord, and he will surely keep his sins in remembrance.

28:2. Forgive thy neighbour if he hath hurt thee:  and then shall thy
sins be forgiven to thee when thou prayest.

28:3. Man to man reserveth anger, and doth he seek remedy of God?

28:4. He hath no mercy on a man like himself, and doth he entreat for
his own sins?

28:5. He that is but flesh, nourisheth anger, and doth he ask
forgiveness of God?  who shall obtain pardon for his sins?

28:6. Remember thy last things, and let enmity cease:

28:7. For corruption and death hang over in his commandments.

In his commandments. . .Supply the sentence out of the Greek thus:
Remember corruption and death, and abide in the commandments.

28:8. Remember the fear of God, and be not angry with thy neighbour.

28:9. Remember the covenant of the most High, and overlook the
ignorance of thy neighbour.

28:10. Refrain from strife, and thou shalt diminish thy sins.

28:11. For a passionate man kindleth strife, and a sinful man will
trouble his friends, and bring in debate in the midst of them that are
at peace.

28:12. For as the wood of the forest is, so the fire burneth, and as a
man's strength is, so shall his anger be, and according to his riches
he shall increase his anger.

28:13. A hasty contention kindleth a fire and a hasty quarrel sheddeth
blood and a tongue that beareth witness bringeth death.

28:14. If thou blow the spark, it shall burn as a fire:  and if thou
spit upon it, it shall be quenched:  both come out of the mouth.

28:15. The whisperer and the double tongue is accursed:  for he hath
troubled many that were at peace.

28:16. The tongue of a third person hath disquieted many, and scattered
them from nation to nation.

28:17. It hath destroyed the strong cities of the rich, and hath
overthrown the houses of great men.

28:18. It hath cut in pieces the forces of people, and undone strong
nations.

28:19. The tongue of a third person hath cast out valiant women, and
deprived them of their labours.

28:20. He that hearkeneth to it, shall never have rest, neither shall
he have a friend in whom he may repose.

28:21. The stroke of a whip maketh a blue mark:  but the stroke of the
tongue will break the bones.

28:22. Many have fallen by the edge of the sword, but not so many as
have perished by their own tongue.

28:23. Blessed is he that is defended from a wicked tongue, that hath
not passed into the wrath thereof, and that hath not drawn the yoke
thereof, and hath not been bound in its bands.

28:24. For its yoke is a yoke of iron:  and its bands are bands of
brass.

28:25. The death thereof is a most evil death:  and hell is preferable
to it.

28:26. Its continuance shall not be for a long time, but it shall
possess the ways of the unjust:  and the just shall not be burnt with
its flame.

28:27. They that forsake God shall fall into it, and it shall burn in
them, and shall not be quenched, and it shall be sent upon them as a
lion, and as a leopard it shall tear them.

28:28. Hedge in thy ears with thorns, hear not a wicked tongue, and
make doors and bars to thy mouth.

28:29. Melt down thy gold and silver, and make a balance for thy words,
and a just bridle for thy mouth:

28:30. And take heed lest thou slip with thy tongue, and fall in the
sight of thy enemies who lie in wait for thee, and thy fall be
incurable unto death.



Ecclesiasticus Chapter 29


Of charity in lending money, and justice in repaying.  Of alms, and of
being surety.

29:1. He that sheweth mercy, lendeth to his neighbour:  and he that is
stronger in hand, keepeth the commandments.

And he that is stronger in hand. . .That is, he that is hearty and
bountiful in lending to his neighbour in his necessity.

29:2. Lend to thy neighbour in the time of his need, and pay thou thy
neighbour again in due time.

29:3. Keep thy word, and deal faithfully with him:  and thou shalt
always find that which is necessary for thee.

29:4. Many have looked upon a thing lent as a thing found, and have
given trouble to them that helped them.

29:5. Till they receive, they kiss the hands of the lender, and in
promises they humble their voice:

29:6. But when they should repay, they will ask time, and will return
tedious and murmuring words, and will complain of the time:

29:7. And if he be able to pay, he will stand off, he will scarce pay
one half, and will count it as if he had found it:

29:8. But if not, he will defraud him of his money, and he shall get
him for an enemy without cause.

29:9. And he will pay him with reproaches and curses, and instead of
honour and good turn will repay him injuries.

29:10. Many have refused to lend, not out of wickedness, but they were
afraid to be defrauded without cause.

29:11. But yet towards the poor be thou more hearty, and delay not to
shew him mercy.

29:12. Help the poor because of the commandment:  and send him not away
empty handed because of his poverty.

29:13. Lose thy money for thy brother and thy friend:  and hide it not
under a stone to be lost.

29:14. Place thy treasure in the commandments of the most High, and it
shall bring thee more profit than gold.

29:15. Shut up alms in the heart of the poor, and it shall obtain help
for thee against all evil.

29:16. Better than the shield of the mighty, and better than the spear:

29:17. It shall fight for thee against thy enemy.

29:18. A good man is surety for his neighbour:  and he that hath lost
shame, will leave him to himself.

29:19. Forget not the kindness of thy surety:  for he hath given his
life for thee.

29:20. The sinner and the unclean fleeth from his surety.

29:21. A sinner attributeth to himself the goods of his surety:  and he
that is of an unthankful mind will leave him that delivered him.

29:22. A man is surety for his neighbour:  and when he hath lost all
shame, he shall forsake him.

29:23. Evil suretyship hath undone many of good estate, and hath tossed
them as a wave of the sea.

29:24. It hath made powerful men to go from place to place round about,
and they have wandered in strange countries.

29:25. A sinner that transgresseth the commandment of the Lord, shall
fall into an evil suretyship:  and he that undertaketh many things,
shall fall into judgment.

29:26. Recover thy neighbour according to thy power, and take heed to
thyself that thou fall not.

29:27. The chief thing for man's life is water and bread, and clothing,
and a house to cover shame.

29:28. Better is the poor man's fare under a roof of boards, than
sumptuous cheer abroad in another man's house.

29:29. Be contented with little instead of much, and thou shalt not
hear the reproach of going abroad.

29:30. It is a miserable life to go as a guest from house to house:  for
where a man is a stranger, he shall not deal confidently, nor open his
mouth.

29:31. He shall entertain and feed, and give drink to the unthankful,
and moreover he shall hear bitter words.

29:32. Go, stranger, and furnish the table, and give others to eat what
thou hast in thy hand.

29:33. Give place to the honourable presence of my friends:  for I want
my house, my brother being to be lodged with me.

29:34. These things are grievous to a man of understanding:  the
upbraiding of houseroom, and the reproaching of the lender.



Ecclesiasticus Chapter 30


Of correction of children.  Health is better than wealth.  Excessive
grief is hurtful.

30:1. He that loveth his son, frequently chastiseth him, that he may
rejoice in his latter end, and not grope after the doors of his
neighbours.

30:2. He that instructeth his son shall be praised in him, and shall
glory in him in the midst of them of his household.

30:3. He that teacheth his son, maketh his enemy jealous, and in the
midst of his friends he shall glory in him.

30:4. His father is dead, and he is as if he were not dead:  for he hath
left one behind him that is like himself.

30:5. While he lived he saw and rejoiced in him:  and when he died he
was not sorrowful, neither was he confounded before his enemies.

30:6. For he left behind him a defender of his house against his
enemies, and one that will requite kindness to his friends.

30:7. For the souls of his sons he shall bind up his wounds, and at
every cry his bowels shall be troubled.

30:8. A horse not broken becometh stubborn, and a child left to himself
will become headstrong.

30:9. Give thy son his way, and he shall make thee afraid:  play with
him, and he shall make thee sorrowful.

30:10. Laugh not with him, lest thou have sorrow, and at the last thy
teeth be set on edge.

30:11. Give him not liberty in his youth, and wink not at his devices.

30:12. Bow down his neck while he is young, and beat his sides while he
is a child, lest he grow stubborn, and regard thee not, and so be a
sorrow of heart to thee.

30:13. Instruct thy son, and labour about him, lest his lewd behaviour
be an offence to thee.

30:14. Better is a poor man who is sound, and strong of constitution,
than a rich man who is weak and afflicted with evils.

30:15. Health of the soul in holiness of justice, is better than all
gold and silver:  and a sound body, than immense revenues.

30:16. There is no riches above the riches of the health of the body:
and there is no pleasure above the joy of the heart.

30:17. Better is death than a bitter life, and everlasting rest, than
continual sickness.

30:18. Good things that are hidden in a mouth that is shut, are as
messes of meat set about a grave.

30:19. What good shall an offering do to an idol?  for it can neither
eat, nor smell:

30:20. So is he that is persecuted by the Lord, bearing the reward of
his iniquity:

30:21. He seeth with his eyes, and groaneth, as an eunuch embracing a
virgin, and sighing.

30:22. Give not up thy soul to sadness, and afflict not thyself in thy
own counsel.

30:23. The joyfulness of the heart, is the life of a man, and a never
failing treasure of holiness:  and the joy of a man is length of life.

30:24. Have pity on thy own soul, pleasing God, and contain thyself:
gather up thy heart in his holiness:  and drive away sadness far from
thee.

30:25. For sadness hath killed many, and there is no profit in it.

30:26. Envy and anger shorten a man's days, and pensiveness will bring
old age before the time.

30:27. A cheerful and good heart is always feasting:  for his banquets
are prepared with diligence.



Ecclesiasticus Chapter 31


Of the desire of riches, and of moderation in eating and drinking.

31:1. Watching for riches consumeth the flesh, and the thought thereof
driveth away sleep.

31:2. The thinking beforehand turneth away the understanding, and a
grievous sickness maketh the soul sober.

31:3. The rich man hath laboured in gathering riches together, and when
he resteth he shall be filled with his goods.

31:4. The poor man hath laboured in his low way of life, and in the end
he is still poor.

31:5. He that loveth gold, shall not be justified:  and he that
followeth after corruption, shall be filled with it.

31:6. Many have been brought to fall for gold, and the beauty thereof
hath been their ruin.

31:7. Gold is a stumblingblock to them that sacrifice to it:  woe to
them that eagerly follow after it, and every fool shall perish by it.

31:8. Blessed is the rich man that is found without blemish:  and that
hath not gone after gold, nor put his trust in money nor in treasures.

31:9. Who is he, and we will praise him?  for he hath done wonderful
things in his life.

31:10. Who hath been tried thereby, and made perfect, he shall have
glory everlasting.  He that could have transgressed, and hath not
transgressed:  and could do evil things, and hath not done them:

31:11. Therefore are his goods established in the Lord, and all the
church of the saints shall declare his alms.

31:12. Art thou set at a great table?  be not the first to open thy
mouth upon it.

31:13. Say not:  There are many things which are upon it.

31:14. Remember that a wicked eye is evil.

31:15. What is created more wicked than an eye?  therefore shall it weep
over all the face when it shall see.

31:16. Stretch not out thy hand first, lest being disgraced with envy
thou be put to confusion.

31:17. Be not hasty in a feast.

31:18. Judge of the disposition of thy neighbour by thyself.

31:19. Use as a frugal man the things that are set before thee:  lest if
thou eatest much, thou be hated.

31:20. Leave off first, for manners' sake:  and exceed not, lest thou
offend.

31:21. And if thou sittest among many, reach not thy hand out first of
all, and be not the first to ask for drink.

31:22. How sufficient is a little wine for a man well taught, and in
sleeping thou shalt not be uneasy with it, and thou shalt feel no pain.

31:23. Watching, and choler, and gripes, are with an intemperate man:

31:24. Sound and wholesome sleep with a moderate man:  he shall sleep
till morning, and his soul shall be delighted with him.

31:25. And if thou hast been forced to eat much, arise, go out, and
vomit:  and it shall refresh thee, and thou shalt not bring sickness
upon thy body.

31:26. Hear me, my son, and despise me not:  and in the end thou shalt
find my words.

31:27. In all thy works be quick, and no infirmity shall come to thee.

31:28. The lips of many shall bless him that is liberal of his bread,
and the testimony of his truth is faithful.

31:29. Against him that is niggardly of his bread, the city will
murmur, and the testimony of his niggardliness is true.

31:30. Challenge not them that love wine:  for wine hath destroyed very
many.

31:31. Fire trieth hard iron:  so wine drunk to excess shall rebuke the
hearts of the proud.

31:32. Wine taken with sobriety is equal life to men:  if thou drink it
moderately, thou shalt be sober.

31:33. What is his life, who is diminished with wine?

31:34. What taketh away life?  death.

31:35. Wine was created from the beginning to make men joyful, and not
to make them drunk.

31:36. Wine drunken with moderation is the joy of the soul and the
heart.

31:37. Sober drinking is health to soul and body.

31:38. Wine drunken with excess raiseth quarrels, and wrath, and many
ruins.

31:39. Wine drunken with excess is bitterness of the soul.

31:40. The heat of drunkenness is the stumblingblock of the fool,
lessening strength and causing wounds.

31:41. Rebuke not thy neighbour in a banquet of wine:  and despise him
not in his mirth.

31:42. Speak not to him words of reproach:  and press him not in
demanding again.



Ecclesiasticus Chapter 32


Lessons for superiors and inferiors.  Advantages of fearing God, and
doing nothing without counsel.

32:1. Have they made thee ruler?  be not lifted up:  be among them as one
of them.

32:2. Have care of them, and so sit down, and when thou hast acquitted
thyself of all thy charge, take thy place:

32:3. That thou mayst rejoice for them, and receive a crown as an
ornament of grace, and get the honour of the contribution.

32:4. Speak, thou that art elder:  for it becometh thee,

32:5. To speak the first word with careful knowledge, and hinder not
music.

32:6. Where there is no hearing, pour not out words, and be not lifted
up out of season with thy wisdom.

32:7. A concert of music in a banquet of wine is as a carbuncle set in
gold.

32:8. As a signet of an emerald in a work of gold:  so is the melody of
music with pleasant and moderate wine.

32:9. Hear in silence, and for thy reverence good grace shall come to
thee.

32:10. Young man, scarcely speak in thy own cause.

32:11. If thou be asked twice, let thy answer be short.

32:12. In many things be as if thou wert ignorant, and hear in silence
and withal seeking.

32:13. In the company of great men take not upon thee:  and when the
ancients are present, speak not much.

32:14. Before a storm goeth lightning:  and before shamefacedness goeth
favour:  and for thy reverence good grace shall come to thee.

32:15. And at the time of rising be not slack:  but be first to run home
to thy house, and there withdraw thyself, and there take thy pastime.

32:16. And do what thou hast a mind, but not in sin or proud speech.

32:17. And for all these things bless the Lord, that made thee, and
that replenisheth thee with all his good things.

32:18. He that feareth the Lord, will receive his discipline:  and they
that will seek him early, shall find a blessing.

32:19. He that seeketh the law, shall be filled with it:  and he that
dealeth deceitfully, shall meet with a stumblingblock therein.

32:20. They that fear the Lord, shall find just judgment, and shall
kindle justice as a light.

32:21. A sinful man will flee reproof, and will find an excuse
according to his will.

32:22. A man of counsel will not neglect understanding, a strange and
proud man will not dread fear:

32:23. Even after he hath done with fear without counsel, he shall be
controlled by the things of his own seeking.

32:24. My son, do thou nothing without counsel, and thou shalt not
repent when thou hast done.

32:25. Go not in the way of ruin, and thou shalt not stumble against
the stones:  trust not thyself to a rugged way, lest thou set a
stumblingblock to thy soul.

32:26. And beware of thy own children, and take heed of them of thy
household.

32:27. In every work of thine regard thy soul in faith:  for this is the
keeping of the commandments.

In faith. . .That is, follow sincerely thy soul in her faith and
conscience.

32:28. He that believeth God, taketh heed to the commandments:  and he
that trusteth in him, shall fare never the worse.



Ecclesiasticus Chapter 33


The fear of God is the best security.  Times and men are in the hands of
God.  Take care of thyself as long as thou livest, and look to thy
servants.

33:1. No evils shall happen to him that feareth the Lord, but in
temptation God will keep him and deliver him from evils.

33:2. A wise man hateth not the commandments and justices, and he shall
not be dashed in pieces as a ship in a storm.

33:3. A man of understanding is faithful to the law of God, and the law
is faithful to him.

33:4. He that cleareth up a question, shall prepare what to say, and so
having prayed he shall be heard, and shall keep discipline, and then he
shall answer.

33:5. The heart of a fool is as a wheel of a cart:  and his thoughts are
like a rolling axletree.

33:6. A friend that is a mocker, is like a stallion horse:  he neigheth
under every one that sitteth upon him.

33:7. Why doth one day excel another, and one light another, and one
year another year, when all come of the sun?

33:8. By the knowledge of the Lord they were distinguished, the sun
being made, and keeping his commandment.

33:9. And he ordered the seasons, and holidays of them, and in them
they celebrated festivals at an hour.

33:10. Some of them God made high and great days, and some of them he
put in the number of ordinary days.  And all men are from the ground,
and out of the earth, from whence Adam was created.

33:11. With much knowledge the Lord hath divided them and diversified
their ways.

33:12. Some of them hath he blessed, and exalted:  and some of them hath
he sanctified, and set near himself:  and some of them hath he cursed
and brought low, and turned them from their station.

33:13. As the potter's clay is in his hand, to fashion and order it:

33:14. All his ways are according to his ordering:  so man is in the
hand of him that made him, and he will render to him according to his
judgment.

33:15. Good is set against evil, and life against death:  so also is the
sinner against a just man.  And so look upon all the works of the most
High.  Two and two, and one against another.

33:16. And I awaked last of all, and as one that gathereth after the
grapegatherers.

33:17. In the blessing of God I also have hoped:  and as one that
gathereth grapes, have I filled the winepress.

33:18. See that I have not laboured for myself only, but for all that
seek discipline.

33:19. Hear me, ye great men, and all ye people, and hearken with your
ears, ye rulers of the church.

33:20. Give not to son or wife, brother or friend, power over thee
while thou livest; and give not thy estate to another, lest thou
repent, and thou entreat for the same.

33:21. As long as thou livest, and hast breath in thee, let no man
change thee.

Change thee. . .That is, so as to have this power over thee.

33:22. For it is better that thy children should ask of thee, than that
thou look toward the hands of thy children.

33:23. In all thy works keep the pre-eminence.

The pre-eminence. . .That is, be master in thy own house, and part not
with thy authority.

33:24. Let no stain sully thy glory.  In the time when thou shalt end
the days of thy life, and in the time of thy decease, distribute thy
inheritance.

33:25. Fodder, and a wand, and a burden are for an ass:  bread, and
correction, and work for a slave.

33:26. He worketh under correction, and seeketh to rest:  let his hands
be idle, and he seeketh liberty.

33:27. The yoke and the thong bend a stiff neck, and continual labours
bow a slave.

33:28. Torture and fetters are for a malicious slave:  send him to work,
that he be not idle:

33:29. For idleness hath taught much evil.

33:30. Set him to work:  for so it is fit for him.  And if he be not
obedient, bring him down with fetters, but be not excessive towards any
one, and do no grievous thing without judgment.

33:31. If thou have a faithful servant, let him be to thee as thy own
soul:  treat him as a brother:  because in the blood of thy soul thou
hast gotten him.

33:32. If thou hurt him unjustly, he will run away:

33:33. And if he rise up and depart, thou knowest not whom to ask, and
in what way to seek him.



Ecclesiasticus Chapter 34


The vanity of dreams.  The advantage of experience, and of the fear of
God.

34:1. The hopes of a man that is void of understanding are vain and
deceitful:  and dreams lift up fools.

34:2. The man that giveth heed to lying visions, is like to him that
catcheth at a shadow, and followeth after the wind.

34:3. The vision of dreams is the resemblance of one thing to another:
as when a man's likeness is before the face of a man.

34:4. What can be made clean by the unclean?  and what truth can come
from that which is false?

34:5. Deceitful divinations and lying omens and the dreams of
evildoers, are vanity:

34:6. And the heart fancieth as that of a woman in travail:  except it
be a vision sent forth from the most High, set not thy heart upon them.

34:7. For dreams have deceived many, and they have failed that put
their trust in them.

34:8. The word of the law shall be fulfilled without a lie, and wisdom
shall be made plain in the mouth of the faithful.

34:9. What doth he know, that hath not been tried?  A man that hath much
experience, shall think of many things:  and he that hath learned many
things, shall shew forth understanding.

34:10. He that hath no experience, knoweth little:  and he that hath
been experienced in many things, multiplieth prudence.

34:11. He that hath not been tried, what manner of things doth he know?
he that hath been surprised, shall abound with subtlety.

34:12. I have seen many things by travelling, and many customs of
things.

34:13. Sometimes I have been in danger of death for these things, and I
have been delivered by the grace of God.

34:14. The spirit of those that fear God, is sought after, and by his
regard shall be blessed.

34:15. For their hope is on him that saveth them, and the eyes of God
are upon them that love him.

34:16. He that feareth the Lord shall tremble at nothing, and shall not
be afraid:  for he is his hope.

34:17. The soul of him that feareth the Lord is blessed.

34:18. To whom doth he look, and who is his strength?

34:19. The eyes of the Lord are upon them that fear him, he is their
powerful protector, and strong stay, a defence from the heat, and a
cover from the sun at noon,

34:20. A preservation from stumbling, and a help from falling:  he
raiseth up the soul, and enlighteneth the eyes, and giveth health, and
life, and blessing.

34:21. The offering of him that sacrificeth of a thing wrongfully
gotten, is stained, and the mockeries of the unjust are not acceptable.

34:22. The Lord is only for them that wait upon him in the way of truth
and justice.

34:23. The most High approveth not the gifts of the wicked:  neither
hath he respect to the oblations of the unjust, nor will he be pacified
for sins by the multitude of their sacrifices.

34:24. He that offereth sacrifice of the goods of the poor, is as one
that sacrificeth the son in the presence of his father.

34:25. The bread of the needy, is the life of the poor:  he that
defraudeth them thereof, is a man of blood.

34:26. He that taketh away the bread gotten by sweat, is like him that
killeth his neighbour.

34:27. He that sheddeth blood, and he that defraudeth the laborer of
his hire, are brothers.

34:28. When one buildeth up, and another pulleth down:  what profit have
they but the labour?

34:29. When one prayeth, and another curseth:  whose voice will God
hear?

34:30. He that washeth himself after touching the dead, if he toucheth
him again, what doth his washing avail?

34:31. So a man that fasteth for his sins, and doth the same again,
what doth his humbling himself profit him?  who will hear his prayer?



Ecclesiasticus Chapter 35


What sacrifices are pleasing to God.

35:1. He that keepeth the law, multiplieth offerings.

35:2. It is a wholesome sacrifice to take heed to the commandments, and
to depart from all iniquity.

35:3. And to depart from injustice, is to offer a propitiatory
sacrifice for injustices, and a begging of pardon for sins.

35:4. He shall return thanks, that offereth fine flour:  and he that
doth mercy, offereth sacrifice.

35:5. To depart from iniquity is that which pleaseth the Lord, and to
depart from injustice, is an entreaty for sins.

35:6. Thou shalt not appear empty in the sight of the Lord.

35:7. For all these things are to be done because of the commandment of
God.

35:8. The oblation of the just maketh the altar fat, and is an odour of
sweetness in the sight of the most High.

35:9. The sacrifice of the just is acceptable, and the Lord will not
forget the memorial thereof.

35:10. Give glory to God with a good heart:  and diminish not the
firstfruits of thy hands.

35:11. In every gift shew a cheerful countenance, and sanctify thy
tithes with joy.

35:12. Give to the most High according to what he hath given to thee,
and with a good eye do according to the ability of thy hands:

35:13. For the Lord maketh recompense, and will give thee seven times
as much.

35:14. Do not offer wicked gifts, for such he will not receive.

35:15. And look not upon an unjust sacrifice, for the Lord is judge,
and there is not with him respect of person.

35:16. The Lord will not accept any person against a poor man, and he
will hear the prayer of him that is wronged.

35:17. He will not despise the prayers of the fatherless:  nor the
widow, when she poureth out her complaint.

35:18. Do not the widow's tears run down the cheek, and her cry against
him that causeth them to fall?

35:19. For from the cheek they go up even to heaven, and the Lord that
heareth will not be delighted with them.

35:20. He that adoreth God with joy, shall be accepted, and his prayer
shall approach even to the clouds.

35:21. The prayer of him that humbleth himself, shall pierce the
clouds:  and till it come nigh he will not be comforted:  and he will not
depart till the most High behold.

35:22. And the Lord will not be slack, but will judge for the just, and
will do judgment:  and the Almighty will not have patience with them,
that he may crush their back:

35:23. And he will repay vengeance to the Gentiles, till he have taken
away the multitude of the proud, and broken the sceptres of the unjust,

35:24. Till he have rendered to men according to their deeds:  and
according to the works of Adam, and according to his presumption,

35:25. Till he have judged the cause of his people, and he shall
delight the just with his mercy.

35:26. The mercy of God is beautiful in the time of affliction, as a
cloud of rain in the time of drought.



Ecclesiasticus Chapter 36


A prayer for the church of God.  Of a good heart, and a good wife.

36:1. Have mercy upon us, O God of all, and behold us, and shew us the
light of thy mercies:

36:2. And send thy fear upon the nations, that have not sought after
thee:  that they may know that there is no God beside thee, and that
they may shew forth thy wonders.

36:3. Lift up thy hand over the strange nations, that they may see thy
power.

36:4. For as thou hast been sanctified in us in their sight, so thou
shalt be magnified among them in our presence,

36:5. That they may know thee, as we also have known thee, that there
is no God beside thee, O Lord.

36:6. Renew thy signs, and work new miracles.

36:7. Glorify thy hand, and thy right arm.

36:8. Raise up indignation, and pour out wrath.

36:9. Take away the adversary, and crush the enemy.

36:10. Hasten the time, and remember the end, that they may declare thy
wonderful works.

36:11. Let him that escapeth be consumed by the rage of the fire:  and
let them perish that oppress thy people.

36:12. Crush the head of the princes of the enemies that say:  There is
no other beside us.

36:13. Gather together all the tribes of Jacob:  that they may know that
there no God besides thee, and may declare thy great works:  and thou
shalt inherit them as from the beginning.

36:14. Have mercy on thy people, upon whom thy name is invoked:  and
upon Israel, whom thou hast raised up to be thy firstborn.

36:15. Have mercy on Jerusalem, the city which thou hast sanctified,
the city of thy rest.

36:16. Fill Sion with thy unspeakable words, and thy people with thy
glory.

36:17. Give testimony to them that are thy creatures from the
beginning, and raise up the prophecies which the former prophets spoke
in thy name.

36:18. Reward them that patiently wait for thee, that thy prophets may
be found faithful:  and hear the prayers of thy servants,

36:19. According to the blessing of Aaron over thy people, and direct
us into the way of justice, and let all know that dwell upon the earth,
that thou art God the beholder of all ages.

36:20. The belly will devour all meat, yet one is better than another.

36:21. The palate tasteth venison and the wise heart false speeches.

36:22. A perverse heart will cause grief, and a man of experience will
resist it.

36:23. A woman will receive every man:  yet one daughter is better than
another.

A woman will receive every man. . .That is, any man that her parents
propose to her to marry, though she does not like him, but marries in
obedience to her parents, who make the choice for her.

36:24. The beauty of a woman cheereth the countenance of her husband,
and a man desireth nothing more.

36:25. If she have a tongue that can cure, and likewise mitigate and
shew mercy:  her husband is not like other men.

36:26. He that possesseth a good wife, beginneth a possession:  she is a
help like to himself, and a pillar of rest.

36:27. Where there is no hedge, the possession shall be spoiled:  and
where there is no wife, he mourneth that is in want.

36:28. Who will trust him that hath no rest, and that lodgeth
wheresoever the night taketh him, as a robber well appointed, that
skippeth from city to city.



Ecclesiasticus Chapter 37


Of the choice of friends and counsellors.

37:1. Every friend will say:  I also am his friend:  but there is a
friend, that is only a friend in name.  Is not this a grief even to
death?

37:2. But a companion and a friend shall be turned to an enemy.

37:3. O wicked presumption, whence camest thou to cover the earth with
thy malice, and deceitfulness?

37:4. There is a companion who rejoiceth with his friend in his joys,
but in the time of trouble, he will be against him.

37:5. There is a companion who condoleth with his friend for his
belly's sake, and he will take up a shield against the enemy.

37:6. Forget not thy friend in thy mind, and be not unmindful of him in
thy riches.

37:7. Consult not with him that layeth a snare for thee, and hide thy
counsel from them that envy thee.

37:8. Every counsellor giveth out counsel, but there is one that is a
counsellor for himself.

37:9. Beware of a counsellor.  And know before what need he hath:  for he
will devise to his own mind:

37:10. Lest he thrust a stake into the ground, and say to thee:

37:11. Thy way is good; and then stand on the other side to see what
shall befall thee.

37:12. Treat not with a man without religion concerning holiness, nor
with an unjust man concerning justice, nor with a woman touching her of
whom she is jealous, nor with a coward concerning war, nor with a
merchant about traffic, nor with a buyer of selling, nor with an
envious man of giving thanks,

37:13. Nor with the ungodly of piety, nor with the dishonest of
honesty, nor with the field laborer of every work,

37:14. Nor with him that worketh by the year of the finishing of the
year, nor with an idle servant of much business:  give no heed to these
in any matter of counsel.

37:15. But be continually with a holy man, whomsoever thou shalt know
to observe the fear of God,

37:16. Whose soul is according to thy own soul:  and who, when thou
shalt stumble in the dark, will be sorry for thee.

37:17. And establish within thyself a heart of good counsel:  for there
is no other thing of more worth to thee than it.

37:18. The soul of a holy man discovereth sometimes true things, more
than seven watchmen that sit in a high place to watch.

37:19. But above all these things pray to the most High, that he may
direct thy way in truth.

37:20. In all thy works let the true word go before thee, and steady
counsel before every action.

37:21. A wicked word shall change the heart:  out of which four manner
of things arise, good and evil, life and death:  and the tongue is
continually the ruler of them.  There is a man that is subtle and a
teacher of many, and yet is unprofitable to his own soul.

37:22. A skilful man hath taught many, and is sweet to his own soul.

37:23. He that speaketh sophistically, is hateful:  he shall be
destitute of every thing.

37:24. Grace is not given him from the Lord:  for he is deprived of all
wisdom.

37:25. There is a wise man that is wise to his own soul:  and the fruit
of his understanding is commendable.

37:26. A wise man instructeth his own people, and the fruits of his
understanding are faithful.

37:27. A wise man shall be filled with blessings, and they that see
shall praise him.

37:28. The life of a man is in the number of his days:  but the days of
Israel are innumerable.

37:29. A wise man shall inherit honour among his people, and his name
shall live for ever.

37:30. My son, prove thy soul in thy life:  and if it be wicked, give it
no power:

37:31. For all things are not expedient for all, and every kind
pleaseth not every soul.

37:32. Be not greedy in any feasting, and pour not out thyself upon any
meat:

37:33. For in many meats there will be sickness, and greediness will
turn to choler.

37:34. By surfeiting many have perished, but he that is temperate,
shall prolong life.



Ecclesiasticus Chapter 38


Of physicians and medicines:  what is to be done in sickness, and how we
are to mourn for the dead.  Of the employments of labourers and
artificers.

38:1. Honour the physician for the need thou hast of him:  for the most
High hath created him.

38:2. For all healing is from God, and he shall receive gifts of the
king.

38:3. The skill of the physician shall lift up his head, and in the
sight of great men he shall be praised.

38:4. The most High hath created medicines out of the earth, and a wise
man will not abhor them.

38:5. Was not bitter water made sweet with wood?

38:6. The virtue of these things is come to the knowledge of men, and
the most High hath given knowledge to men, that he may be honoured in
his wonders.

38:7. By these he shall cure and shall allay their pains, and of these
the apothecary shall make sweet confections, and shall make up
ointments of health, and of his works there shall be no end.

38:8. For the peace of God is over all the face of the earth.

38:9. My son, in thy sickness neglect not thyself, but pray to the
Lord, and he shall heal thee.

38:10. Turn away from sin and order thy hands aright, and cleanse thy
heart from all offence.

38:11. Give a sweet savour, and a memorial of fine flour, and make a
fat offering, and then give place to the physician.

38:12. For the Lord created him:  and let him not depart from thee, for
his works are necessary.

38:13. For there is a time when thou must fall into their hands:

38:14. And they shall beseech the Lord, that he would prosper what they
give for ease and remedy, for their conversation.

38:15. He that sinneth in the sight of his Maker, shall fall into the
hands of the physician.

38:16. My son, shed tears over the dead, and begin to lament as if thou
hadst suffered some great harm, and according to judgment cover his
body, and neglect not his burial.

38:17. And for fear of being ill spoken of weep bitterly for a day, and
then comfort thyself in thy sadness.

38:18. And make mourning for him according to his merit for a day, or
two, for fear of detraction.

38:19. For of sadness cometh death, and it overwhelmeth the strength,
and the sorrow of the heart boweth down the neck.

38:20. In withdrawing aside sorrow remaineth:  and the substance of the
poor is according to his heart.

38:21. Give not up thy heart to sadness, but drive it from thee:  and
remember the latter end.

38:22. Forget it not:  for there is no returning, and thou shalt do him
no good, and shalt hurt thyself.

38:23. Remember my judgment:  for thine also shall be so:  yesterday for
me, and to day for thee.

38:24. When the dead is at rest, let his remembrance rest, and comfort
him in the departing of his spirit.

38:25. The wisdom of a scribe cometh by his time of leisure:  and he
that is less in action, shall receive wisdom.

A scribe. . .That is, a doctor of the law, or, a learned man.

38:26. With what wisdom shall he be furnished that holdeth the plough,
and that glorieth in the goad, that driveth the oxen therewith, and is
occupied in their labours, and his whole talk is about the offspring of
bulls?

38:27. He shall give his mind to turn up furrows, and his care is to
give the kine fodder.

38:28. So every craftsman and workmaster that laboureth night and day,
he who maketh graven seals, and by his continual diligence varieth the
figure:  he shall give his mind to the resemblance of the picture, and
by his watching shall finish the work.

38:29. So doth the smith sitting by the anvil and considering the iron
work.  The vapour of the fire wasteth his flesh, and he fighteth with
the heat of the furnace.

38:30. The noise of the hammer is always in his ears, and his eye is
upon the pattern of the vessel he maketh.

38:31. He setteth his mind to finish his work, and his watching to
polish them to perfection.

38:32. So doth the potter sitting at his work, turning the wheel about
with his feet, who is always carefully set to his work, and maketh all
his work by number:

38:33. He fashioneth the clay with his arm, and boweth down his
strength before his feet:

38:34. He shall give his mind to finish the glazing, and his watching
to make clean the furnace.

38:35. All these trust to their hands, and every one is wise in his own
art.

38:36. Without these a city is not built.

38:37. And they shall not dwell, nor walk about therein, and they shall
not go up into the assembly.

38:38. Upon the judges' seat they shall not sit, and the ordinance of
judgment they shall not understand, neither shall they declare
discipline and judgment, and they shall not be found where parables are
spoken:

38:39. But they shall strengthen the state of the world, and their
prayer shall be in the work of their craft, applying their soul, and
searching in the law of the most High.



Ecclesiasticus Chapter 39


The exercises of the wise man.  The Lord is to be glorified for his
works.

39:1. The wise man will seek out the wisdom of all the ancients, and
will be occupied in the prophets.

39:2. He will keep the sayings of renowned men, and will enter withal
into the subtilties of parables.

39:3. He will search out the hidden meanings of proverbs, and will be
conversant in the secrets of parables.

39:4. He shall serve among great men, and appear before the governor.

39:5. He shall pass into strange countries:  for he shall try good and
evil among men.

39:6. He will give his heart to resort early to the Lord that made him,
and he will pray in the sight of the most High.

39:7. He will open his mouth in prayer, and will make supplication for
his sins.

39:8. For if it shall please the great Lord, he will fill him with the
spirit of understanding:

39:9. And he will pour forth the words of his wisdom as showers, and in
his prayer he will confess to the Lord.

39:10. And he shall direct his counsel, and his knowledge, and in his
secrets shall he meditate.

39:11. He shall shew forth the discipline he hath learned, and shall
glory in the law of the covenant of the Lord.

39:12. Many shall praise his wisdom, and it shall never be forgotten.

39:13. The memory of him shall not depart away, and his name shall be
in request from generation to generation.

39:14. Nations shall declare his wisdom, and the church shall shew
forth his praise.

39:15. If he continue, he shall leave a name above a thousand:  and if
he rest, it shall be to his advantage.

39:16. I will yet meditate that I may declare:  for I am filled as with
a holy transport.

39:17. By a voice he saith:  Hear me, ye divine offspring, and bud forth
as the rose planted by the brooks of waters.

Ye divine offspring. . .He speaks to the children of Israel, the people
of God:  whom he exhorts to bud forth and flourish with virtue.

39:18. Give ye a sweet odour as frankincense.

39:19. Send forth flowers, as the lily, and yield a smell, and bring
forth leaves in grace, and praise with canticles, and bless the Lord in
his works.

39:20. Magnify his name, and give glory to him with the voice of your
lips, and with the canticles of your mouths, and with harps, and in
praising him, you shall say in this manner:

39:21. All the works of the Lord are exceeding good.

39:22. At his word the waters stood as a heap:  and at the words of his
mouth the receptacles of waters:

39:23. For at his commandment favour is shewn, and there is no
diminishing of his salvation.

39:24. The works of all flesh are before him, and there is nothing hid
from his eyes.

39:25. He seeth from eternity to eternity, and there is nothing
wonderful before him.

39:26. There is no saying:  What is this, or what is that?  for all
things shall be sought in their time.

39:27. His blessing hath overflowed like a river.

39:28. And as a flood hath watered the earth; so shall his wrath
inherit the nations, that have not sought after him.

39:29. Even as he turned the waters into a dry land, and the earth was
made dry:  and his ways were made plain for their journey:  so to sinners
they are stumblingblocks in his wrath.

39:30. Good things were created for the good from the beginning, so for
the wicked, good and evil things.

39:31. The principal things necessary for the life of men, are water,
fire, and iron, salt, milk, and bread of flour, and honey, and the
cluster of the grape, and oil, and clothing.

39:32. All these things shall be for good to the holy, so to the
sinners and the ungodly they shall be turned into evil.

39:33. There are spirits that are created for vengeance, and in their
fury they lay on grievous torments.

39:34. In the time of destruction they shall pour out their force:  and
they shall appease the wrath of him that made them.

39:35. Fire, hail, famine, and death, all these were created for
vengeance.

39:36. The teeth of beasts, and scorpions, and serpents, and the sword
taking vengeance upon the ungodly unto destruction.

39:37. In his commandments they shall feast, and they shall be ready
upon earth when need is, and when their time is come they shall not
transgress his word.

39:38. Therefore from the beginning I was resolved, and I have
meditated, and thought on these things and left them in writing,

39:39. All the works of the Lord are good, and he will furnish every
work in due time.

39:40. It is not to be said:  This is worse than that:  for all shall be
well approved in their time.

39:41. Now therefore with the whole heart and mouth praise ye him, and
bless the name of the Lord.



Ecclesiasticus Chapter 40


The miseries of the life of man are relieved by the grace of God and
his fear.

40:1. Great labour is created for all men, and a heavy yoke is upon the
children of Adam from the day of their coming out of their mother's
womb, until the day of their burial into the mother of all.

40:2. Their thoughts, and fears of the heart, their imagination of
things to come, and the day of their end:

40:3. From him that sitteth on a glorious throne, unto him that is
humbled in earth and ashes:

40:4. From him that weareth purple, and beareth the crown, even to him
that is covered with rough linen:  wrath, envy, trouble, unquietness,
and the fear of death, continual anger, and strife,

40:5. And in the time of rest upon his bed, the sleep of the night
changeth his knowledge.

40:6. A little and as nothing is his rest, and afterward in sleep, as
in the day of keeping watch.

40:7. He is troubled in the vision of his heart, as if he had escaped
in the day of battle.  In the time of his safety he rose up, and
wondereth that there is no fear.

40:8. Such things happen to all flesh, from man even to beast, and upon
sinners are sevenfold more.

40:9. Moreover, death, and bloodshed, strife, and sword, oppressions,
famine, and affliction, and scourges:

40:10. All these things are created for the wicked, and for their sakes
came the flood.

40:11. All things that are of the earth, shall return to the earth
again, and all waters shall return to the sea.

40:12. All bribery, and injustice shall be blotted out, and fidelity
shall stand for ever.

40:13. The riches of the unjust shall be dried up like a river, and
shall pass away with a noise like a great thunder in rain.

40:14. While he openeth his hands he shall rejoice:  but transgressors
shall pine away in the end.

40:15. The offspring of the ungodly shall not bring forth many
branches, and make a noise as unclean roots upon the top of a rock.

40:16. The weed growing over every water, and at the bank of the river,
shall be pulled up before all grass.

40:17. Grace is like a paradise in blessings, and mercy remaineth for
ever.

40:18. The life of a laborer that is content with what he hath, shall
be sweet, and in it thou shalt find a treasure.

40:19. Children, and the building of a city shall establish a name, but
a blameless wife shall be counted above them both.

40:20. Wine and music rejoice the heart, but the love of wisdom is
above them both.

40:21. The flute and the psaltery make a sweet melody, but a pleasant
tongue is above them both.

40:22. Thy eye desireth favour and beauty, but more than these green
sown fields.

40:23. A friend and companion meeting together in season, but above
them both is a wife with her husband.

40:24. Brethren are a help in the time of trouble, but mercy shall
deliver more than they.

40:25. Gold and silver make the feet stand sure:  but wise counsel is
above them both.

40:26. Riches and strength lift up the heart:  but above these is the
fear of the Lord.

40:27. There is no want in the fear of the Lord, and it needeth not to
seek for help.

40:28. The fear of the Lord is like a paradise of blessing, and they
have covered it above all glory.

40:29. My son, in thy lifetime be not indigent:  for it is better to die
than to want.

40:30. The life of him that looketh toward another man's table is not
to be counted a life:  for he feedeth his soul with another man's meat.

40:31. But a man, well instructed and taught, will look to himself.

40:32. Begging will be sweet in the mouth of the unwise, but in his
belly there shall burn a fire.



Ecclesiasticus Chapter 41


Of the remembrance of death:  of an evil and of a good name:  of what
things we ought to be ashamed.

41:1. O death, how bitter is the remembrance of thee to a man that hath
peace in his possessions!

41:2. To a man that is at rest, and whose ways are prosperous in all
things, and that is yet able to take meat!

41:3. O death thy sentence is welcome to the man that is in need, and
to him whose strength faileth:

41:4. Who is in a decrepit age, and that is in care about all things,
and to the distrustful that loseth patience!

41:5. Fear not the sentence of death.  Remember what things have been
before thee, and what shall come after thee:  this sentence is from the
Lord upon all flesh.

41:6. And what shall come upon thee by the good pleasure of the most
High?  whether ten, or a hundred, or a thousand years.

41:7. For among the dead there is no accusing of life.

41:8. The children of sinners become children of abominations, and they
that converse near the houses of the ungodly.

41:9. The inheritance of the children of sinners shall perish, and with
their posterity shall be a perpetual reproach.

41:10. The children will complain of an ungodly father, because for his
sake they are in reproach.

41:11. Woe to you, ungodly men, who have forsaken the law of the most
high Lord.

41:12. And if you be born, you shall be born in malediction:  and if you
die, in malediction shall be your portion.

41:13. All things that are of the earth, shall return into the earth:
so the ungodly shall from malediction to destruction.

41:14. The mourning of men is about their body, but the name of the
ungodly shall be blotted out.

41:15. Take care of a good name:  for this shall continue with thee,
more than a thousand treasures precious and great.

41:16. A good life hath its number of days:  but a good name shall
continue for ever.

41:17. My children, keep discipline in peace:  for wisdom that is hid,
and a treasure that is not seen, what profit is there in them both?

41:18. Better is the man that hideth his folly, than the man that
hideth his wisdom.

41:19. Wherefore have a shame of these things I am now going to speak
of.

Have a shame, etc. . .That is to say, be ashamed of doing any of these
things, which I am now going to mention; for though sometimes
shamefacedness is not to be indulged:  yet it is often good and
necessary:  as in the following cases.

41:20. For it is not good to keep all shamefacedness:  and all things do
not please all men in opinion.

41:21. Be ashamed of fornication before father and mother:  and of a lie
before a governor and a man in power:

41:22. Of an offence before a prince, and a judge:  of iniquity before a
congregation and a people:

41:23. Of injustice before a companion and friend:  and in regard to the
place where thou dwellest,

41:24. Of theft, and of the truth of God, and the covenant:  of leaning
with thy elbow over meat, and of deceit in giving and taking:

41:25. Of silence before them that salute thee:  of looking upon a
harlot:  and of turning away thy face from thy kinsman.

41:26. Turn not away thy face from thy neighbour, and of taking away a
portion and not restoring.

41:27. Gaze not upon another man's wife, and be not inquisitive after
his handmaid, and approach not her bed.

41:28. Be ashamed of upbraiding speeches before friends:  and after thou
hast given, upbraid not.



Ecclesiasticus Chapter 42


Of what things we ought not to be ashamed.  Cautions with regard to
women.  The works and greatness of God.

42:1. Repeat not the word which thou hast heard, and disclose not the
thing that is secret; so shalt thou be truly without confusion, and
shalt find favour before all men:  be not ashamed of any of these
things, and accept no person to sin thereby:

42:2. Of the law of the most High, and of his covenant, and of judgment
to justify the ungodly:

42:3. Of the affair of companions and travellers, and of the gift of
the inheritance of friends:

42:4. Of exactness of balance and weights, of getting much or little:

42:5. Of the corruption of buying, and of merchants, and of much
correction of children, and to make the side of a wicked slave to
bleed.

42:6. Sure keeping is good over a wicked wife.

42:7. Where there are many hands, shut up, and deliver all things in
number, and weight:  and put all in writing that thou givest out or
receivest in.

42:8. Be not ashamed to inform the unwise and foolish, and the aged,
that are judged by young men:  and thou shalt be well instructed in all
things, and well approved in the sight of all men living.

42:9. The father waketh for the daughter when no man knoweth, and the
care for her taketh away his sleep, when she is young, lest she pass
away the flower of her age, and when she is married, lest she should be
hateful:

42:10. In her virginity, lest she should be corrupted, and be found
with child in her father's house:  and having a husband, lest she should
misbehave herself, or at the least become barren.

42:11. Keep a sure watch over a shameless daughter:  lest at anytime she
make thee become a laughingstock to thy enemies, and a byword in the
city, and a reproach among the people, and she make thee ashamed before
all the multitude.

42:12. Behold not everybody's beauty:  and tarry not among women.

42:13. For from garments cometh a moth, and from a woman the iniquity
of a man.

42:14. For better is the iniquity of a man, than a woman doing a good
turn, and a woman bringing shame and reproach.

Better is the iniquity, etc. . .That is, there is, commonly speaking,
less danger to be apprehended to the soul from the churlishness, or
injuries we receive from men, than from the flattering favours and
familiarity of women.

42:15. I will now remember the works of the Lord, and I will declare
the things I have seen.  By the words of the Lord are his works.

42:16. The sun giving light hath looked upon all things, and full of
the glory of the Lord is his work.

42:17. Hath not the Lord made the saints to declare all his wonderful
works, which the Lord Almighty hath firmly settled to be established
for his glory?

42:18. He hath searched out the deep, and the heart of men:  and
considered their crafty devices.

42:19. For the Lord knoweth all knowledge, and hath beheld the signs of
the world, he declareth the things that are past, and the things that
are to come, and revealeth the traces of hidden things.

42:20. No thought escapeth him, and no word can hide itself from him.

42:21. He hath beautified the glorious works of his wisdom:  and he is
from eternity to eternity, and to him nothing may be added,

42:22. Nor can he be diminished, and he hath no need of any counsellor.

42:23. O how desirable are all his works, and what we can know is but
as a spark!

42:24. All these things live, and remain for ever, and for every use
all things obey him.

42:25. All things are double, one against another, and he hath made
nothing defective.

42:26. He hath established the good things of every one.  And who shall
be filled with beholding his glory?



Ecclesiasticus Chapter 43


The works of God are exceedingly glorious and wonderful:  no man is able
sufficiently to praise him.

43:1. The firmament on high is his beauty, the beauty of heaven with
its glorious shew.

43:2. The sun when he appeareth shewing forth at his rising, an
admirable instrument, the work of the most High.

43:3. At noon he burneth the earth, and who can abide his burning heat?
As one keeping a furnace in the works of heat:

43:4. The sun three times as much, burneth the mountains, breathing out
fiery vapours, and shining with his beams, he blindeth the eyes.

43:5. Great is the Lord that made him, and at his words he hath
hastened his course.

43:6. And the moon in all in her season, is for a declaration of times
and a sign of the world.

43:7. From the moon is the sign of the festival day, a light that
decreaseth in her perfection.

43:8. The month is called after her name, increasing wonderfully in her
perfection.

43:9. Being an instrument of the armies on high, shining gloriously in
the firmament of heaven.

43:10. The glory of the stars is the beauty of heaven; the Lord
enlighteneth the world on high.

43:11. By the words of the holy one they stand in judgment, and shall
never fall in their watches.

43:12. Look upon the rainbow, and bless him that made it:  it is very
beautiful in its brightness.

43:13. It encompasseth the heaven about with the circle of its glory,
the hands of the most High have displayed it.

43:14. By his commandment he maketh the snow to fall apace, and sendeth
forth swiftly the lightnings of his judgment.

43:15. Through this are the treasures opened, and the clouds fly out
like birds.

43:16. By his greatness he hath fixed the clouds, and the hailstones
are broken.

43:17. At his sight shall the mountains be shaken, and at his will the
south wind shall blow.

43:18. The noise of his thunder shall strike the earth, so doth the
northern storm, and the whirlwind:

43:19. And as the birds lighting upon the earth, he scattereth snow,
and the falling thereof, is as the coming down of locusts.

43:20. The eye admireth at the beauty of the whiteness thereof, and the
heart is astonished at the shower thereof.

43:21. He shall pour frost as salt upon the earth:  and when it
freezeth, it shall become like the tops of thistles.

43:22. The cold north wind bloweth, and the water is congealed into
crystal; upon every gathering together of waters it shall rest, and
shall clothe the waters as a breastplate.

43:23. And it shall devour the mountains, and burn the wilderness, and
consume all that is green as with fire.

43:24. A present remedy of all is the speedy coming of a cloud, and a
dew that meeteth it, by the heat that cometh, shall overpower it.

43:25. At his word the wind is still, and with his thought he appeaseth
the deep, and the Lord hath planted islands therein.

43:26. Let them that sail on the sea, tell the dangers thereof:  and
when we hear with our ears, we shall admire.

43:27. There are great and wonderful works:  a variety of beasts, and of
all living things, and the monstrous creatures of whales.

43:28. Through him is established the end of their journey, and by his
word all things are regulated.

43:29. We shall say much, and yet shall want words:  but the sum of our
words is, He is all.

43:30. What shall we be able to do to glorify him?  for the Almighty
himself is above all his works.

43:31. The Lord is terrible, and exceeding great, and his power is
admirable.

43:32. Glorify the Lord as much as ever you can, for he will yet far
exceed, and his magnificence is wonderful.

43:33. Blessing the Lord, exalt him as much as you can; for he is above
all praise.

43:34. When you exalt him put forth all your strength, and be not
weary:  for you can never go far enough.

43:35. Who shall see him, and declare him?  and who shall magnify him as
he is from the beginning?

43:36. There are many things hidden from us that are greater than
these:  for we have seen but a few of his works.

43:37. But the Lord hath made all things, and to the godly he hath
given wisdom.



Ecclesiasticus Chapter 44


The praises of the holy fathers, in particular of Enoch, Noe, Abraham,
Isaac, and Jacob.

44:1. Let us now praise men of renown and our fathers in their
generation.

44:2. The Lord hath wrought great glory through his magnificence from
the beginning.

44:3. Such as have borne rule in their dominions, men of great power,
and endued with their wisdom, shewing forth in the prophets the dignity
of prophets,

44:4. And ruling over the present people, and by the strength of wisdom
instructing the people in most holy words.

44:5. Such as by their skill sought out musical tunes, and published
canticles of the scriptures.

44:6. Rich men in virtue, studying beautifulness:  living at peace in
their houses.

44:7. All these have gained glory in their generations, and were
praised in their days.

44:8. They that were born of them have left a name behind them, that
their praises might be related:

44:9. And there are some, of whom there is no memorial:  who are
perished, as if they had never been:  and are become as if they had
never been born, and their children with them.

44:10. But these were men of mercy, whose godly deeds have not failed:

44:11. Good things continue with their seed,

44:12. Their posterity are a holy inheritance, and their seed hath
stood in the covenants.

44:13. And their children for their sakes remain for ever:  their seed
and their glory shall not be forsaken.

44:14. Their bodies are buried in peace, and their name liveth unto
generation and generation.

44:15. Let the people shew forth their wisdom, and the church declare
their praise.

44:16. Henoch pleased God, and was translated into paradise, that he
may give repentance to the nations.

44:17. Noe was found perfect, just, and in the time of wrath he was
made a reconciliation.

44:18. Therefore was there a remnant left to the earth, when the flood
came.

44:19. The covenants of the world were made with him, that all flesh
should no more be destroyed with the flood.

44:20. Abraham was the great father of a multitude of nations, and
there was not found the like to him in glory, who kept the law of the
most High, and was in covenant with him.

44:21. In his flesh he established the covenant, and in temptation he
was found faithful.

44:22. Therefore by an oath he gave him glory in his posterity, that he
should increase as the dust of the earth,

44:23. And that he would exalt his seed as the stars, and they should
inherit from sea to sea, and from the river to the ends of the earth.

44:24. And he did in like manner with Isaac for the sake of Abraham his
father.

44:25. The Lord gave him the blessing of all nations, and confirmed his
covenant upon the head of Jacob.

44:26. He acknowledged him in his blessings, and gave him an
inheritance, and divided him his portion in twelve tribes.

44:27. And he preserved for him men of mercy, that found grace in the
eyes of all flesh.



Ecclesiasticus Chapter 45


The praises of Moses, of Aaron, and of Phinees.

45:1. Moses was beloved of God, and men:  whose memory is in
benediction.

45:2. He made him like the saints in glory, and magnified him in the
fear of his enemies, and with his words he made prodigies to cease.

45:3. He glorified him in the sight of kings, and gave him commandments
in the sight of his people, and shewed him his glory.

45:4. He sanctified him in his faith, and meekness, and chose him out
of all flesh.

45:5. For he heard him, and his voice, and brought him into a cloud.

45:6. And he gave him commandments before his face, and a law of life
and instruction, that he might teach Jacob his covenant, and Israel his
judgments.

45:7. He exalted Aaron his brother, and like to himself of the tribe of
Levi:

45:8. He made an everlasting covenant with him, and gave him the
priesthood of the nation, and made him blessed in glory,

45:9. And he girded him about with a glorious girdle, and clothed him
with a robe of glory, and crowned him with majestic attire.

45:10. He put upon him a garment to the feet, and breeches, and an
ephod, and he compassed him with many little bells of gold all round
about,

45:11. That as he went there might be a sound, and a noise made that
might be heard in the temple, for a memorial to the children of his
people.

45:12. He gave him a holy robe of gold, and blue, and purple, a woven
work of a wise man, endued with judgment and truth:

45:13. Of twisted scarlet the work of an artist, with precious stones
cut and set in gold, and graven by the work of a lapidary for a
memorial, according to the number of the tribes of Israel.

45:14. And a crown of gold upon his mitre wherein was engraved
Holiness, an ornament of honour:  a work of power, and delightful to the
eyes for its beauty.

45:15. Before him there were none so beautiful, even from the
beginning.

45:16. No stranger was ever clothed with them, but only his children
alone, and his grandchildren for ever.

45:17. His sacrifices were consumed with fire every day.

45:18. Moses filled his hands and anointed him with holy oil.

45:19. This was made to him for an everlasting testament, and to his
seed as the days of heaven, to execute the office of the priesthood,
and to have praise, and to glorify his people in his name.

45:20. He chose him out of all men living, to offer sacrifice to God,
incense, and a good savour, for a memorial to make reconciliation for
his people:

45:21. And he gave him power in his commandments, in the covenants of
his judgments, that he should teach Jacob his testimonies, and give
light to Israel in his law.

45:22. And strangers stood up against him, and through envy the men
that were with Dathan and Abiron, compassed him about in the
wilderness, and the congregation of Core in their wrath.

45:23. The Lord God saw and it pleased him not, and they were consumed
in his wrathful indignation.

45:24. He wrought wonders upon them, and consumed them with a flame of
fire.

45:25. And he added glory to Aaron, and gave him an inheritance, and
divided unto him the firstfruits of the increase of the earth.

45:26. He prepared them bread in the first place unto fulness:  for the
sacrifices also of the Lord they shall eat, which he gave to him, and
to his seed.

45:27. But he shall not inherit among the people in the land, and he
hath no portion among the people:  for he himself is his portion and
inheritance.

45:28. Phinees the son of Eleazar is the third in glory, by imitating
him in the fear of the Lord:

45:29. And he stood up in the shameful fall of the people:  in the
goodness and readiness of his soul he appeased God for Israel.

45:30. Therefore he made to him a covenant of peace, to be the prince
of the sanctuary, and of his people, that the dignity of priesthood
should be to him and to his seed for ever.

45:31. And a covenant to David the king, the son of Jesse of the tribe
of Juda, an inheritance to him and to his seed, that he might give
wisdom into our heart to judge his people in justice, that their good
things might not be abolished, and he made their glory in their nation
everlasting.



Ecclesiasticus Chapter 46


The praise of Josue, of Caleb, and of Samuel.

46:1. Valiant in war was Jesus the son of Nave, who was successor of
Moses among the prophets, who was great according to his name,

Jesus the son of Nave. . .So Josue is named in the Greek Bibles.  For
Josue and Jesus signify the same thing, viz., a saviour.

46:2. Very great for the saving the elect of God, to overthrow the
enemies that rose up against them, that he might get the inheritance
for Israel.

46:3. How great glory did he gain when he lifted up his hands, and
stretched out swords against the cities?

46:4. Who before him hath so resisted?  for the Lord himself brought the
enemies.

46:5. Was not the sun stopped in his anger, and one day made as two?

46:6. He called upon the most high Sovereign when the enemies assaulted
him on every side, and the great and holy God heard him by hailstones
of exceeding great force.

46:7. He made a violent assault against the nation of his enemies, and
in the descent he destroyed the adversaries.

And in the descent. . .Of Beth-horon (Jos. 10.).

46:8. That the nations might know his power, that it is not easy to
fight against God.  And he followed the mighty one:

46:9. And in the days of Moses he did a work of mercy, he and Caleb the
son of Jephone, in standing against the enemy, and withholding the
people from sins, and appeasing the wicked murmuring.

46:10. And they two being appointed, were delivered out of the danger
from among the number of six hundred thousand men on foot, to bring
them into their inheritance, into the land that floweth with milk and
honey.

46:11. And the Lord gave strength also to Caleb, and his strength
continued even to his old age, so that he went up to the high places of
the land, and his seed obtained it for an inheritance:

46:12. That all the children of Israel might see, that it is good to
obey the holy God.

46:13. Then all the judges, every one by name, whose heart was not
corrupted:  who turned not away from the Lord,

46:14. That their memory might be blessed, and their bones spring up
out of their place,

46:15. And their name continue for ever, the glory of the holy men
remaining unto their children.

46:16. Samuel the prophet of the Lord, the beloved of the Lord his God,
established a new government, and anointed princes over his people.

46:17. By the law of the Lord he judged the congregation, and the God
of Jacob beheld, and by his fidelity he was proved a prophet.

46:18. And he was known to be faithful in his words, because he saw the
God of light:

46:19. And called upon the name of the Lord Almighty, in fighting
against the enemies who beset him on every side, when he offered a lamb
without blemish.

46:20. And the Lord thundered from heaven, and with a great noise made
his voice to be heard.

46:21. And he crushed the princes of the Tyrians, and all the lords of
the Philistines:

46:22. And before the time of the end of his life in the world, he
protested before the Lord, and his anointed:  money, or any thing else,
even to a shoe, he had not taken of any man, and no man did accuse him.

46:23. And after this he slept, and he made known to the king, and
shewed him the end of his life, and he lifted up his voice from the
earth in prophecy to blot out the wickedness of the nation.



Ecclesiasticus Chapter 47


The praise of Nathan, of David, and of Solomon:  Of his fall and
punishment.

47:1. Then Nathan the prophet arose in the days of David.

47:2. And as the fat taken away from the flesh, so was David chosen
from among the children of Israel.

47:3. He played with lions as with lambs:  and with bears he did in like
manner as with the lambs of the flock, in his youth.

47:4. Did not he kill the giant, and take away reproach from his
people?

47:5. In lifting up his hand, with the stone in the sling he beat down
the boasting of Goliath:

47:6. For he called upon the Lord the Almighty, and he gave strength in
his right hand, to take away the mighty warrior, and to set up the horn
of his nation.

47:7. So in ten thousand did he glorify him, and praised him in the
blessings of the Lord, in offering to him a crown of glory:

47:8. For he destroyed the enemies on every side, and extirpated the
Philistines the adversaries unto this day:  he broke their horn for
ever.

47:9. In all his works he gave thanks to the holy one, and to the most
High, with words of glory.

47:10. With his whole heart he praised the Lord, and loved God that
made him:  and he gave him power against his enemies:

47:11. And he set singers before the altar, and by their voices he made
sweet melody.

47:12. And to the festivals he added beauty, and set in order the
solemn times even to the end of his life, that they should praise the
holy name of the Lord, and magnify the holiness of God in the morning.

47:13. The Lord took away his sins, and exalted his horn for ever:  and
he gave him a covenant of the kingdom, and a throne of glory in Israel.

47:14. After him arose up a wise son, and for his sake he cast down all
the power of the enemies.

47:15. Solomon reigned in days of peace, and God brought all his
enemies under him, that he might build a house in his name, and prepare
a sanctuary for ever:  O how wise wast thou in thy youth!

47:16. And thou wast filled as a river with wisdom, and thy soul
covered the earth.

47:17. And thou didst multiply riddles in parables:  thy name went
abroad to the islands far off, and thou wast beloved in thy peace.

47:18. The countries wondered at thee for thy canticles, and proverbs,
and parables, and interpretations,

47:19. And at the name of the Lord God, whose surname is, God of
Israel.

47:20. Thou didst gather gold as copper, and didst multiply silver as
lead,

47:21. And thou didst bow thyself to women:  and by thy body thou wast
brought under subjection.

47:22. Thou hast stained thy glory, and defiled thy seed so as to bring
wrath upon thy children, and to have thy folly kindled,

47:23. That thou shouldst make the kingdom to be divided, and out of
Ephraim a rebellious kingdom to rule.

47:24. But God will not leave off his mercy, and he will not destroy,
nor abolish his own works, neither will he cut up by the roots the
offspring of his elect:  and he will not utterly take away the seed of
him that loveth the Lord.

47:25. Wherefore he gave a remnant to Jacob, and to David of the same
stock.

47:26. And Solomon had an end with his fathers.

47:27. And he left behind him of his seed, the folly of the nation,

47:28. Even Roboam that had little wisdom, who turned away the people
through his counsel:

47:29. And Jeroboam the son of Nabat, who caused Israel to sin, and
shewed Ephraim the way of sin, and their sins were multiplied
exceedingly.

47:30. They removed them far away from their land.

47:31. And they sought out all iniquities, till vengeance came upon
them, and put an end to all their sins.



Ecclesiasticus Chapter 48


The praise of Elias, of Eliseus, of Ezechias, and of Isaias.

48:1. And Elias the prophet stood up, as a fire, and his word burnt
like a torch.

48:2. He brought a famine upon them, and they that provoked him in
their envy, were reduced to a small number, for they could not endure
the commandments of the Lord.

48:3. By the word of the Lord he shut up the heaven, and he brought
down fire from heaven thrice.

48:4. Thus was Elias magnified in his wondrous works.  And who can glory
like to thee?

48:5. Who raisedst up a dead man from below, from the lot of death, by
the word of the Lord God.

48:6. Who broughtest down kings to destruction, and brokest easily
their power in pieces, and the glorious from their bed.

48:7. Who heardest judgment in Sina, and in Horeb the judgments of
vengeance.

48:8. Who anointedst kings to penance, and madest prophets successors
after thee.

48:9. Who wast taken up in a whirlwind of fire, in a chariot of fiery
horses.

48:10. Who art registered in the judgments of times to appease the
wrath of the Lord, to reconcile the heart of the father to the son, and
to restore the tribes of Jacob.

48:11. Blessed are they that saw thee, and were honoured with thy
friendship.

48:12. For we live only in our life, but after death our name shall not
be such.

48:13. Elias was indeed covered with the whirlwind, and his spirit was
filled up in Eliseus:  in his days he feared not the prince, and no man
was more powerful than he.

48:14. No word could overcome him, and after death his body prophesied.

48:15. In his life he did great wonders, and in death he wrought
miracles.

48:16. For all this the people repented not, neither did they depart
from their sins till they were cast out of their land, and were
scattered through all the earth.

48:17. And there was left but a small people, and a prince in the house
of David.

48:18. Some of these did that which pleased God:  but others committed
many sins.

48:19. Ezechias fortified his city, and brought in water into the midst
thereof, and he digged a rock with iron, and made a well for water.

48:20. In his days Sennacherib came up, and sent Rabsaces, and lifted
up his hand against them, and he stretched out his hand against Sion,
and became proud through his power.

48:21. Then their hearts and hands trembled, and they were in pain as
women in travail.

48:22. And they called upon the Lord who is merciful, and spreading
their hands, they lifted them up to heaven:  and the holy Lord God
quickly heard their voice.

48:23. He was not mindful of their sins, neither did he deliver them up
to their enemies, but he purified them by the hand of Isaias, the holy
prophet.

48:24. He overthrew the army of the Assyrians, and the angel of the
Lord destroyed them.

48:25. For Ezechias did that which pleased God, and walked valiantly in
the way of David his father, which Isaias, the great prophet, and
faithful in the sight of God, had commanded him.

48:26. In his days the sun wen backward, and he lengthened the king's
life.

48:27. With a great spirit he saw the things that are to come to pass
at last, and comforted the mourners in Sion.

48:28. He showed what should come to pass for ever, and secret things
before they came.



Ecclesiasticus Chapter 49


The praise of Josias, of Jeremias, Ezechiel, and the twelve prophets.
Also of Zorobabel, Jesus the son of Josedech, Nehemias, Enoch, Joseph,
Seth, Sem, and Adam.

49:1. The memory of Josias is like the composition of a sweet smell
made by the art of a perfumer:

49:2. His remembrance shall be sweet as honey in every mouth, and as
music at a banquet of wine.

49:3. He was directed by God unto the repentance of the nation, and he
took away the abominations of wickedness.

49:4. And he directed his heart towards the Lord, and in the days of
sinners he strengthened godliness.

49:5. Except David, and Ezechias and Josias, all committed sin.

49:6. For the kings of Juda forsook the law of the most High, and
despised the fear of God.

49:7. So they gave their kingdom to others, and their glory to a
strange nation,

49:8. They burnt the chosen city of holiness, and made the streets
thereof desolate according to the prediction of Jeremias.

49:9. For they treated him evil, who was consecrated a prophet from his
mother's womb, to overthrow, and pluck up, and destroy, and to build
again, and renew.

49:10. It was Ezechiel that saw the glorious vision, which was shewn
him upon the chariot of cherubims.

49:11. For he made mention of the enemies under the figure of rain, and
of doing good to them that shewed right ways.

49:12. And may the bones of the twelve prophets spring up out of their
place:  for they strengthened Jacob, and redeemed themselves by strong
faith.

49:13. How shall we magnify Zorobabel?  for he was as a signet on the
right hand;

49:14. In like manner Jesus the son of Josedec who in their days built
the house, and set up a holy temple to the Lord, prepared for
everlasting glory.

49:15. And let Nehemias be a long time remembered, who raised up for us
our walls that were cast down, and set up the gates and the bars, who
rebuilt our houses.

49:16. No man was born upon earth like Henoch:  for he also was taken up
from the earth.

49:17. Nor as Joseph, who was a man born prince of his brethren, the
support of his family, the ruler of his brethren, the stay of the
people:

49:18. And his bones were visited, and after death they prophesied.

They prophesied. . .That is, by their being carried out of Egypt they
verified the prophetic prediction of Joseph.  Gen. 50.

49:19. Seth and Sem obtained glory among men:  and above every soul Adam
in the beginning,



Ecclesiasticus Chapter 50


The praises of Simon the high priest.  The conclusion.

50:1. Simon the high priest, the son of Onias, who in his life propped
up the house, and in his days fortified the temple.

50:2. By him also the height of the temple was founded, the double
building and the high walls of the temple.

50:3. In his days the wells of water flowed out, and they were filled
as the sea above measure.

50:4. He took care of his nation, and delivered it from destruction.

50:5. He prevailed to enlarge the city, and obtained glory in his
conversation with the people:  and enlarged the entrance of the house
and the court.

50:6. He shone in his days as the morning star in the midst of a cloud,
and as the moon at the full.

50:7. And as the sun when it shineth, so did he shine in the temple of
God.

50:8. And as the rainbow giving light in bright clouds, and as the
flower of roses in the days of the spring, and as the lilies that are
on the brink of the water, and as the sweet smelling frankincense in
the time of summer.

50:9. As a bright fire, and frankincense burning in the fire.

50:10. As a massy vessel of gold, adorned with every precious stone.

50:11. As an olive tree budding forth, and a cypress tree rearing
itself on high, when he put on the robe of glory, and was clothed with
the perfection of power.

Clothed with the perfection of power. . .That is, with all the vestments
denoting his dignity and authority.

50:12. When he went up to the holy altar, he honoured the vesture of
holiness.

50:13. And when he took the portions out of the hands of the priests,
he himself stood by the altar.  And about him was the ring of his
brethren:  and as the cedar planted in mount Libanus,

50:14. And as branches of palm trees, they stood round about him, and
all the sons of Aaron in their glory.

50:15. And the oblation of the Lord was in their hands, before all the
congregation of Israel:  and finishing his service, on the altar, to
honour the offering of the most high King,

50:16. He stretched forth his hand to make a libation, and offered of
the blood of the grape.

50:17. He poured out at the foot of the altar a divine odour to the
most high Prince.

50:18. Then the sons of Aaron shouted, they sounded with beaten
trumpets, and made a great noise to be heard for a remembrance before
God.

50:19. Then all the people together made haste, and fell down to the
earth upon their faces, to adore the Lord their God, and to pray to the
Almighty God the most High.

50:20. And the singers lifted up their voices, and in the great house
the sound of sweet melody was increased.

50:21. And the people in prayer besought the Lord the most High, until
the worship of the Lord was perfected, and they had finished their
office.

50:22. Then coming down, he lifted up his hands over all the
congregation of the children of Israel, to give glory to God with his
lips, and to glory in his name:

50:23. And he repeated his prayer, willing to shew the power of God.

50:24. And now pray ye to the God of all, who hath done great things in
all the earth, who hath increased our days from our mother's womb, and
hath done with us according to his mercy.

50:25. May he grant us joyfulness of heart, and that there be peace in
our days in Israel for ever:

50:26. That Israel may believe that the mercy of God is with us, to
deliver us in his days.

50:27. There are two nations which my soul abhorreth:  and the third is
no nation:  which I hate:

Abhorreth. . .Viz., with a holy indignation, as enemies of God and
persecutors of his people.  Such were then the Edomites who abode in
mount Seir, the Philistines, and the Samaritans who dwelt in Sichem,
and had their schismatical temple in that neighbourhood.

50:28. They that sit on mount Seir, and the Philistines, and the
foolish people that dwell in Sichem.

50:29. Jesus the son of Sirach, of Jerusalem, hath written in this book
the doctrine of wisdom and instruction, who renewed wisdom from his
heart.

50:30. Blessed is he that is conversant in these good things and he
that layeth them up in his heart, shall be wise always.

50:31. For if he do them, he shall be strong to do all things:  because
the light of God guideth his steps.



Ecclesiasticus Chapter 51


A prayer of praise and thanksgiving.

51:1. A prayer of Jesus the son of Sirach.  I will give glory to thee, O
Lord, O King, and I will praise thee, O God my Saviour.

51:2. I will give glory to thy name:  for thou hast been a helper and
protector to me.

51:3. And hast preserved my body from destruction, from the snare of an
unjust tongue, and from the lips of them that forge lies, and in the
sight of them that stood by, thou hast been my helper.

51:4. And thou hast delivered me, according to the multitude of the
mercy of thy name, from them that did roar, prepared to devour.

51:5. Out of the hands of them that sought my life, and from the gates
of afflictions, which compassed me about:

51:6. From the oppression of the flame which surrounded me, and in the
midst of the fire I was not burnt.

51:7. From the depth of the belly of hell, and from an unclean tongue,
and from lying words, from an unjust king, and from a slanderous
tongue:

51:8. My soul shall praise the Lord even to death.

51:9. And my life was drawing near to hell beneath.

51:10. They compassed me on every side, and there was no one that would
help me.  I looked for the succour of men, and there was none.

51:11. I remembered thy mercy, O Lord, and thy works, which are from
the beginning of the world.

51:12. How thou deliverest them that wait for thee, O Lord, and savest
them out of the hands of the nations.

51:13. Thou hast exalted my dwelling place upon the earth and I have
prayed for death to pass away.

51:14. I called upon the Lord, the father of my Lord, that he would not
leave me in the day of my trouble, and in the time of the proud without
help.

51:15. I will praise thy name continually, and will praise it with
thanksgiving, and my prayer was heard.

51:16. And thou hast saved me from destruction, and hast delivered me
from the evil time.

51:17. Therefore I will give thanks, and praise thee, and bless the
name of the Lord.

51:18. When I was yet young, before I wandered about, I sought for
wisdom openly in my prayer.

51:19. I prayed for her before the temple, and unto the very end I will
seek after her, and she flourished as a grape soon ripe.

51:20. My heart delighted in her, my foot walked in the right way, from
my youth up I sought after her.

51:21. I bowed down my ear a little, and received her.

51:22. I found much wisdom in myself, and profited much therein.

51:23. To him that giveth me wisdom, will I give glory.

51:24. For I have determined to follow her:  I have had a zeal for good,
and shall not be confounded.

51:25. My soul hath wrestled for her, and in doing it I have been
confirmed.

51:26. I stretched forth my hands on high, and I bewailed my ignorance
of her.

51:27. I directed my soul to her, and in knowledge I found her.

51:28. I possessed my heart with her from the beginning:  therefore I
shall not be forsaken.

51:29. My entrails were troubled in seeking her:  therefore shall I
possess a good possession.

51:30. The Lord hath given me a tongue for my reward:  and with it I
will praise him.

51:31. Draw near to me, ye unlearned, and gather yourselves together
into the hours of discipline.

51:32. Why are ye slow and what do you say of these things?  your souls
are exceeding thirsty.

51:33. I have opened my mouth, and have spoken:  buy her for yourselves
without silver,

51:34. And submit your neck to the yoke, and let your soul receive
discipline:  for she is near at hand to be found.

51:35. Behold with your eyes how I have laboured a little, and have
found much rest to myself.

51:36. Receive ye discipline as a great sum of money, and possess
abundance of gold by her.

51:37. Let your soul rejoice in his mercy and you shall not be
confounded in his praise.

51:38. Work your work before the time, and he will give you your reward
in his time.




THE PROPHECY OF ISAIAS



This inspired writer is called by the Holy Ghost, the great prophet,
(Ecclesiasticus 48.25,) from the greatness of his prophetic spirit, by
which he hath foretold so long before, and in so clear a manner, the
coming of Christ, the mysteries of our redemption, the calling of the
Gentiles, and the glorious establishment, and perpetual flourishing of
the church of Christ:  insomuch that he may seem to have been rather an
evangelist than a prophet.  His very name is not without mystery; for
Isaias in Hebrew signifies the salvation of the Lord, or Jesus is the
Lord.  He was, according to the tradition of the Hebrews, of the blood
royal of the kings of Juda:  and after a most holy life, ended his days
by a glorious martyrdom; being sawed in two, at the command of his
wicked son in law, King Manasses, for reproving his evil ways.



Isaias Chapter 1


The prophet complains of the sins of Juda and Jerusalem, and exhorts
them to a sincere conversion.

1:1. The vision of Isaias the Son of Amos, which he saw concerning Juda
and Jerusalem in the days of Ozias, Joathan, Achaz, and Ezechias, kings
of Juda.

1:2. Hear, O ye heavens, and give ear, O earth, for the Lord hath
spoken.  I have brought up children, and exalted them:  but they have
despised me.

1:3. The ox knoweth his owner, and the ass his master's crib:  but
Israel hath not known me, and my people hath not understood.

1:4. Woe to the sinful nation, a people laden with iniquity, a wicked
seed, ungracious children:  they have forsaken the Lord, they have
blasphemed the Holy One of Israel, they are gone away backwards.

1:5. For what shall I strike you any more, you that increase
transgression?  the whole head is sick, and the whole heart is sad.

1:6. From the sole of the foot unto the top of the head, there is no
soundness therein:  wounds and bruises and swelling sores:  they are not
bound up, nor dressed, nor fomented with oil.

1:7. Your land is desolate, your cities are burnt with fire:  your
country strangers devour before your face, and it shall be desolate as
when wasted by enemies.

1:8. And the daughter of Sion shall be left as a covert in a vineyard,
and as a lodge in a garden of cucumbers, and as a city that is laid
waste.

1:9. Except the Lord of hosts had left us seed, we had been as Sodom,
and we should have been like to Gomorrha.

1:10. Hear the word of the Lord, ye rulers of Sodom, give ear to the
law of our God, ye people of Gomorrha.

1:11. To what purpose do you offer me the multitude of your victims,
saith the Lord?  I am full, I desire not holocausts of rams, and fat of
fatlings, and blood of calves, and lambs, and buck goats.

1:12. When you came to appear before me, who required these things at
your hands, that you should walk in my courts?

1:13. Offer sacrifice no more in vain:  incense is an abomination to me.
The new moons, and the sabbaths and other festivals I will not abide,
your assemblies are wicked.

1:14. My soul hateth your new moons, and your solemnities:  they are
become troublesome to me, I am weary of bearing them.

1:15. And when you stretch forth your hands, I will turn away my eyes
from you:  and when you multiply prayer, I will not hear:  for your hands
are full of blood.

1:16. Wash yourselves, be clean, take away the evil of your devices
from my eyes, cease to do perversely,

1:17. Learn to do well:  seek judgment, relieve the oppressed, judge for
the fatherless, defend the widow.

1:18. And then come, and accuse me, saith the Lord:  if your sins be as
scarlet, they shall be made as white as snow:  and if they be red as
crimson, they shall be white as wool.

1:19. If you be willing, and will hearken to me, you shall eat the good
things of the land.

1:20. But if you will not, and will provoke me to wrath:  the sword
shall devour you because the mouth of the Lord hath spoken it.

1:21. How is the faithful city, that was full of judgment, become a
harlot?  justice dwelt in it, but now murderers.

1:22. Thy silver is turned into dross:  thy wine is mingled with water.

1:23. Thy princes are faithless, companions of thieves:  they all love
bribes, they run after rewards.  They judge not for the fatherless:  and
the widow's cause cometh not in to them.

1:24. Therefore saith the Lord the God of hosts, the mighty one of
Israel:  Ah! I will comfort myself over my adversaries:  and I will be
revenged of my enemies.

1:25. And I will turn my hand to thee, and I will clean purge away thy
dross, and I will take away all thy tin.

1:26. And I will restore thy judges as they were before, and thy
counsellors as of old.  After this thou shalt be called the city of the
just, a faithful city.

1:27. Sion shall be redeemed in judgment, and they shall bring her back
in justice.

1:28. And he shall destroy the wicked, and the sinners together:  and
they that have forsaken the Lord, shall be consumed.

1:29. For they shall be confounded for the idols, to which they have
sacrificed:  and you shall be ashamed of the gardens which you have
chosen.

1:30. When you shall be as an oak with the leaves falling off, and as a
garden without water.

1:31. And your strength shall be as the ashes of tow, and your work as
a spark:  and both shall burn together, and there shall be none to
quench it.



Isaias Chapter 2


All nations shall flow to the church of Christ.  The Jews shall be
rejected for their sins.  Idolatry shall be destroyed.

2:1. The word that Isaias the son of Amos saw, concerning Juda and
Jerusalem.

2:2. And in the last days the mountain of the house of the Lord shall
be prepared on the top of mountains, and it shall be exalted above the
hills, and all nations shall flow unto it.

The last days. . .The whole time of the new law, from the coming of
Christ till the end of the world, is called in the scripture the last
days; because no other age or time shall come after it, but only
eternity.--Ibid.  On the top of mountains, etc. . .This shews the
perpetual visibility of the church of Christ:  for a mountain upon the
top of mountains cannot be hid.

2:3. And many people shall go, and say:  Come and let us go up to the
mountain of the Lord, and to the house of the God of Jacob, and he will
teach us his ways, and we will walk in his paths:  for the law shall
come forth from Sion, and the word of the Lord from Jerusalem.

2:4. And he shall judge the Gentiles, and rebuke many people:  and they
shall turn their swords into ploughshares, and their spears into
sickles:  nation shall not lift up sword against nation, neither shall
they be exercised any more to war.

2:5. O house of Jacob, come ye, and let us walk in the light of the
Lord.

2:6. For thou hast cast off thy people, the house of Jacob:  because
they are filled as in times past, and have had soothsayers as the
Philistines, and have adhered to strange children.

2:7. Their land is filled with silver and gold:  and there is no end of
their treasures.

2:8. And their land is filled with horses:  and their chariots are
innumerable.  Their land also is full of idols:  they have adored the
work of their own hands, which their own fingers have made.

2:9. And man hath bowed himself down, and man hath been debased:
therefore forgive them not.

2:10. Enter thou into the rock, and hide thee in the pit from the face
of the fear of the Lord, and from the glory of his majesty.

2:11. The lofty eyes of man are humbled, and the haughtiness of men
shall be made to stoop:  and the Lord alone shall be exalted in that
day.

2:12. Because the day of the Lord of hosts shall be upon every one that
is proud and highminded, and upon every one that is arrogant, and he
shall be humbled.

2:13. And upon all the tall and lofty cedars of Libanus, and upon all
the oaks of Basan.

2:14. And upon all the high mountains and upon all the elevated hills.

2:15. And upon every high tower, and every fenced wall.

2:16. And upon all the ships of Tharsis, and upon all that is fair to
behold.

2:17. And the loftiness of men shall be bowed down, and the haughtiness
of men shall be humbled, and the Lord alone shall be exalted in that
day.

2:18. And idols shall be utterly destroyed.

Idols shall be utterly destroyed. . .or utterly pass away.  This was
verified by the establishment of Christianity.  And by this and other
texts of the like nature, the wild system of some modern sectaries is
abundantly confuted, who charge the whole Christian church with
worshipping idols, for many ages.

2:19. And they shall go into the holes of rocks, and into the caves of
the earth from the face of the fear of the Lord, and from the glory of
his majesty, when he shall rise up to strike the earth.

2:20. In that day a man shall cast away his idols of silver, and his
idols of gold, which he had made for himself to adore, moles and bats.

2:21. And he shall go into the clefts of rocks, and into the holes of
stones from the face of the fear of the Lord, and from the glory of his
majesty, when he shall rise up to strike the earth.

2:22. Cease ye therefore from the man, whose breath is in his nostrils,
for he is reputed high.



Isaias Chapter 3


The confusion and other evils that shall come upon the Jews for their
sins.  The pride of their women shall be punished.

3:1. For behold the sovereign Lord of hosts shall take away from
Jerusalem, and from Juda the valiant and the strong, the whole strength
of bread, and the whole strength of water.

3:2. The strong man, and the man of war, the judge, and the prophet and
the cunning man, and the ancient.

3:3. The captain over fifty, and the honourable in countenance, and the
counsellor, and the architect, and the skilful in eloquent speech.

3:4. And I will give children to be their princes, and the effeminate
shall rule over them.

3:5. And the people shall rush one upon another, and every man against
his neighbour:  the child shall make a tumult against the ancient, and
the base against the honourable.

3:6. For a man shall take hold of his brother, one of the house of his
father, saying:  Thou hast a garment, be thou our ruler, and let this
ruin be under thy hand.

3:7. In that day he shall answer, saying:  I am no healer, and in my
house there is no bread, nor clothing:  make me not ruler of the people.

3:8. For Jerusalem is ruined, and Juda is fallen:  because their tongue,
and their devices are against the Lord, to provoke the eyes of his
majesty.

3:9. The shew of their countenance hath answered them:  and they have
proclaimed abroad their sin as Sodom, and they have not hid it:  woe to
their souls, for evils are rendered to them.

3:10. Say to the just man that it is well, for he shall eat the fruit
of his doings.

3:11. Woe to the wicked unto evil:  for the reward of his hands shall be
given him.

3:12. As for my people, their oppressors have stripped them, and women
have ruled over them.  O my people, they that call thee blessed, the
same deceive thee, and destroy the way of thy steps.

3:13. The Lord standeth up to judge, and he standeth to judge the
people.

3:14. The Lord will enter into judgment with the ancients of his
people, and its princes:  for you have devoured the vineyard, and the
spoil of the poor is in your house.

3:15. Why do you consume my people, and grind the faces of the poor?
saith the Lord the God of hosts.

3:16. And the Lord said:  Because the daughters of Sion are haughty, and
have walked with stretched out necks, and wanton glances of their eyes,
and made a noise as they walked with their feet and moved in a set
pace:

3:17. The Lord will make bald the crown of the head of the daughters of
Sion, and the Lord will discover their hair.

3:18. In that day the Lord will take away the ornaments of shoes, and
little moons,

3:19. And chains and necklaces, and bracelets, and bonnets,

3:20. And bodkins, and ornaments of the legs, and tablets, and sweet
balls, and earrings,

3:21. And rings, and jewels hanging on the forehead,

3:22. And changes of apparel, and short cloaks, and fine linen, and
crisping pins,

3:23. And lookingglasses, and lawns, and headbands, and fine veils.

3:24. And instead of a sweet smell there shall be stench, and instead
of a girdle, a cord, and instead of curled hair, baldness, and instead
of a stomacher, haircloth.

3:25. Thy fairest men also shall fall by the sword, and thy valiant
ones in battle.

3:26. And her gates shall lament and mourn, and she shall sit desolate
on the ground.



Isaias Chapter 4


After an extremity of evils that shall fall upon the Jews, a remnant
shall be comforted by Christ.

4:1. And in that day seven women shall take hold of one man, saying:  We
will eat our own bread, and wear our own apparel:  only let us be called
by thy name, take away our reproach.

4:2. In that day the bud of the Lord shall be in magnificence and
glory, and the fruit of the earth shall be high, and a great joy to
them that shall have escaped of Israel.

The bud of the Lord. . .That is, Christ.

4:3. And it shall come to pass, that every one that shall be left in
Sion, and that shall remain in Jerusalem, shall be called holy, every
one that is written in life in Jerusalem.

4:4. If the Lord shall wash away the filth of the daughters of Sion,
and shall wash away the blood of Jerusalem out of the midst thereof, by
the spirit of judgment, and by the spirit of burning.

4:5. And the Lord will create upon every place of mount Sion, and where
he is called upon, a cloud by day, and a smoke and the brightness of a
flaming fire in the night:  for over all the glory shall be a
protection.

4:6. And there shall be a tabernacle for a shade in the daytime from
the heat, and for a security and covert from the whirlwind, and from
rain.



Isaias Chapter 5


The reprobation of the Jews is foreshewn under the parable of a
vineyard.  A woe is pronounced against sinners:  the army of God shall
send against them.

5:1. I will sing to my beloved the canticle of my cousin concerning his
vineyard.  My beloved had a vineyard on a hill in a fruitful place.

My cousin. . .So the prophet calls Christ, as being of his family and
kindred, by descending from the house of David.  Ibid.  On a hill,
etc. . .Literally, in the horn, the son of oil.

5:2. And he fenced it in, and picked the stones out of it, and planted
it with the choicest vines, and built a tower in the midst thereof, and
set up a winepress therein:  and he looked that it should bring forth
grapes, and it brought forth wild grapes.

5:3. And now, O ye inhabitants of Jerusalem, and ye men of Juda, judge
between me and my vineyard.

5:4. What is there that I ought to do more to my vineyard, that I have
not done to it?  was it that I looked that it should bring forth grapes,
and it hath brought forth wild grapes?

5:5. And now I will shew you what I will do to my vineyard.  I will take
away the hedge thereof, and it shall be wasted:  I will break down the
wall thereof, and it shall be trodden down.

5:6. And I will make it desolate:  it shall not be pruned, and it shall
not be digged:  but briers and thorns shall come up:  and I will command
the clouds to rain no rain upon it.

5:7. For the vineyard of the Lord of hosts is the house of Israel:  and
the man of Juda, his pleasant plant:  and I looked that he should do
judgment, and behold iniquity:  and do justice, and behold a cry.

5:8. Woe to you that join house to house and lay field to field, even
to the end of the place:  shall you alone dwell in the midst of the
earth?

5:9. These things are in my ears, saith the Lord of hosts:  Unless many
great and fair houses shall become desolate, without an inhabitant.

5:10. For ten acres of vineyard shall yield one little measure, and
thirty bushels of seed shall yield three bushels.

5:11. Woe to you that rise up early in the morning to follow
drunkenness, and to drink in the evening, to be inflamed with wine.

5:12. The harp, and the lyre, and, the timbrel and the pipe, and wine
are in your feasts:  and the work of the Lord you regard not, nor do you
consider the works of his hands.

5:13. Therefore is my people led away captive, because they had not
knowledge, and their nobles have perished with famine, and their
multitude were dried up with thirst.

5:14. Therefore hath hell enlarged her soul, and opened her mouth
without any bounds, and their strong ones, and their people, and their
high and glorious ones shall go down into it.

5:15. And man shall be brought down, and man shall be humbled, and the
eyes of the lofty shall be brought low.

5:16. And the Lord of hosts shall be exalted in judgment, and the holy
God shall be sanctified in justice.

5:17. And the lambs shall feed according to their order, and strangers
shall eat the deserts turned into fruitfulness.

5:18. Woe to you that draw iniquity with cords of vanity, and sin as
the rope of a cart.

5:19. That say:  Let him make haste, and let his work come quickly, that
we may see it:  and let the counsel of the Holy One of Israel come, that
we may know it.

5:20. Woe to you that call evil good, and good evil:  that put darkness
for light, and light for darkness:  that put bitter for sweet, and sweet
for bitter.

5:21. Woe to you that are wise in your own eyes, and prudent in your
own conceits.

5:22. Woe to you that are mighty to drink wine, and stout men at
drunkenness.

5:23. That justify the wicked for gifts, and take away the justice of
the just from him.

5:24. Therefore as the tongue of the fire devoureth the stubble, and
the heat of the flame consumeth it:  so shall their root be as ashes,
and their bud shall go up as dust:  for they have cast away the law of
the Lord of hosts, and have blasphemed the word of the Holy One of
Israel.

5:25. Therefore is the wrath of the Lord kindled against his people,
and he hath stretched out his hand upon them, and struck them:  and the
mountains were troubles, and their carcasses became as dung in the
midst of the streets.  For after this his anger is not turned away, but
his hand is stretched out still.

5:26. And he will lift up a sign to the nations afar off, and will
whistle to them from the ends of the earth:  and behold they shall come
with speed swiftly.

5:27. There is none that shall faint, nor labour among them:  they shall
not slumber nor sleep, neither shall the girdle of their loins be
loosed, nor the latchet of their shoes be broken.

5:28. Their arrows are sharp, and all their bows are bent.  The hoofs of
their horses shall be like the flint, and their wheels like the
violence of a tempest.

5:29. Their roaring like that of a lion, they shall roar like young
lions:  yea they shall roar, and take hold of the prey, and they shall
keep fast hold of it, and there shall be none to deliver it.

5:30. And they shall make a noise against them that day, like the
roaring of the sea; we shall look towards the land, and behold darkness
of tribulation, and the light is darkened with the mist thereof.



Isaias Chapter 6


A glorious vision, in which the prophet's lips are cleansed:  he
foretelleth the obstinacy of the Jews.

6:1. In the year that king Ozias died, I saw the Lord sitting upon a
throne high and elevated:  and his train filled the temple.

6:2. Upon it stood the seraphims:  the one had six wings, and the other
had six wings:  with two they covered his face, and with two they
covered his feet, and with two they flew.

6:3. And they cried one to another, and said:  Holy, holy, holy, the
Lord God of hosts, all the earth is full of his glory,

6:4. And the lintels of the doors were moved at the voice of him that
cried, and the house was filled with smoke.

6:5. And I said:  Woe is me, because I have held my peace; because I am
a man of unclean lips, and I dwell in the midst of a people that hath
unclean lips, and I have seen with my eyes the King the Lord of hosts.

6:6. And one of the seraphims flew to me, and in his hand was a live
coal, which he had taken with the tongs off the altar.

6:7. And he touched my mouth, and said:  Behold this hath touched thy
lips, and thy iniquities shall be taken away, and thy sin shall be
cleansed.

6:8. And I heard the voice of the Lord, saying:  Whom shall I send?  and
who shall go for us?  And I said:  Lo, here am I, send me.

6:9. And he said:  Go, and thou shalt say to this people:  Hearing, hear,
and understand not:  and see the vision, and know it not.

6:10. Blind the heart of this people, and make their ears heavy, and
shut their eyes:  lest they see with their eyes, and hear with their
ears, and understand with their heart, and be converted and I heal
them.

6:11. And I said:  How long, O Lord?  And he said:  Until the cities be
wasted without inhabitant, and the houses without man, and the land
shall be left desolate.

6:12. And the Lord shall remove men far away, and she shall be
multiplied that was left in the midst of the earth.

6:13. And there shall be still a tithing therein, and she shall turn,
and shall be made a show as a turpentine tree, and as an oak that
spreadeth its branches:  that which shall stand therein, shall be a holy
seed.



Isaias Chapter 7


The prophet assures king Achaz that the two kings his enemies shall not
take Jerusalem.  A virgin shall conceive and bear a son.

7:1. And it came to pass in the days of Achaz the son of Joathan, the
son of Ozias, king of Juda, that Rasin king of Syria and Phacee the son
of Romelia king of Israel, came up to Jerusalem, to fight against it:
but they could not prevail over it.

7:2. And they told the house of David, saying:  Syria hath rested upon
Ephraim, and his heart was moved, and the heart of his people, as the
trees of the woods are moved with the wind.

7:3. And the Lord said to Isaias:  Go forth to meet Achaz, thou and
Jasub thy son that is left, to the conduit of the upper pool in the way
of the fuller's field.

7:4. And thou shalt say to him:  See thou be quiet:  fear not, and let
not thy heart be afraid of the two tails of these firebrands, smoking
with the wrath of the fury of Rasin king of Syria, and of the son of
Romelia.

7:5. Because Syria hath taken counsel against thee, unto the evil of
Ephraim and the son of Romelia, saying:

7:6. Let us go up to Juda, and rouse it up, and draw it away to us, and
make the son of Tabeel king in the midst thereof.

7:7. Thus saith the Lord God:  It shall not stand, and this shall not
be.

7:8. But the head of Syria is Damascus, and the head of Damascus is
Rasin:  and within threescore and five years, Ephraim shall cease to be
a people:

7:9. And the head of Ephraim is Samaria, and the head of Samaria is the
son of Romelia.  If you will not believe, you shall not continue.

7:10. And the Lord spoke again to Achaz, saying:

7:11. Ask thee a sign of the Lord thy God, either unto the depth of
hell, or unto the height above.

7:12. And Achaz said:  I will not ask, and I will not tempt the Lord.

7:13. And he said:  Hear ye therefore, O house of David:  Is it a small
thing for you to be grievous to men, that you are grievous to my God
also?

7:14. Therefore the Lord himself shall give you a sign.  Behold a virgin
shall conceive, and bear a son and his name shall be called Emmanuel.

7:15. He shall eat butter and honey, that he may know to refuse the
evil, and to choose the good.

7:16. For before the child know to refuse the evil and to choose the
good, the land which thou abhorrest shall be forsaken of the face of
her two kings.

7:17. The Lord shall bring upon thee, and upon thy people, and upon the
house of thy father, days that have not come since the time of the
separation of Ephraim from Juda with the king of the Assyrians.

7:18. And it shall come to pass in that day, that the Lord shall hiss
for the fly, that is in the uttermost parts of the rivers of Egypt, and
for the bee that is in the land of Assyria.

7:19. And they shall come, and shall all of them rest in the torrents
of the valleys, and in the holes of the rocks, and upon all places set
with shrubs, and in all hollow places.

7:20. In that day the Lord shall shave with a razor that is hired by
them that are beyond the river, by the king of the Assyrians, the head
and the hairs of the feet, and the whole beard.

7:21. And it shall come to pass in that day, that a man shall nourish a
young cow, and two sheep.

7:22. And for the abundance of milk he shall eat butter:  for butter and
honey shall every one eat that shall be left in the midst of the land.

7:23. And it shall come to pass in that day, that every place where
there were a thousand vines, at a thousand pieces of silver, shall
become thorns and briers.

7:24. With arrows and with bows they shall go in thither:  for briers
and thorns shall be in all the land.

7:25. And as for the hills that shall be raked with a rake, the fear of
thorns and briers shall not come thither, but they shall be for the ox
to feed on, and the lesser cattle to tread upon.



Isaias Chapter 8


The name of a child that is to be born:  many evils shall come upon the
Jews for their sins.

8:1. And the Lord said to me:  Take thee a great book, and write in it
with a man's pen.  Take away the spoils with speed, quickly take the
prey.

8:2. And I took unto me faithful witnesses, Urias the priest, and
Zacharias the son of Barachias.

8:3. And I went to the prophetess, and she conceived, and bore a son.
And the Lord said to me:  Call his name, Hasten to take away the spoils:
Make hast to take away the prey.

8:4. For before the child know to call his father and his mother, the
strength of Damascus, and the spoils of Samaria shall be taken away
before the king of the Assyrians.

8:5. And the Lord spoke to me again, saying:

8:6. Forasmuch as this people hath cast away the waters of Siloe, that
go with silence, and hath rather taken Rasin, and the son of Romelia:

8:7. Therefore behold the Lord will bring upon them the waters of the
river strong and many, the king of the Assyrians, and all his glory:
and he shall come up over all his channels, and shall overflow all his
banks.

8:8. And shall pass through Juda, overflowing, and going over shall
reach even to the neck.  And the stretching out of his wings shall fill
the breadth of thy, land, O Emmanuel.

8:9. Gather yourselves together, O ye people, and be overcome, and give
ear, all ye lands afar off:  strengthen yourselves, and be overcome,
gird yourselves, and be overcome.

8:10. Take counsel together, and it shall be defeated:  speak a word,
and it shall not be done:  because God is with us.

8:11. For thus saith the Lord to me:  As he hath taught me, with a
strong arm, that I should not walk in the way of this people, saying:

8:12. Say ye not:  A conspiracy:  for all that this people speaketh, is a
conspiracy:  neither fear ye their fear, nor be afraid.

8:13. Sanctify the Lord of hosts himself:  and let him be your fear, and
let him be your dread.

8:14. And he shall be a sanctification to you.  But for a stone of
stumbling, and for a rock of offence to the two houses of Israel, for a
snare and a ruin to the inhabitants of Jerusalem.

8:15. And very many of them shall stumble and fall, and shall be broken
in pieces, and shall be snared, and taken.

8:16. Bind up the testimony, seal the law among my disciples.

8:17. And I will wait for the Lord, who hath hid his face from the
house of Jacob, and I will look for him.

8:18. Behold I and my children, whom the Lord hath given me for a sign,
and for a wonder in Israel from the Lord of hosts, who dwelleth in
mount Sion.

8:19. And when they shall say to you:  Seek of pythons, and of diviners,
who mutter in their enchantments:  should not the people seek of their
God, for the living of the dead?

Seek of pythons. . .That is, people pretending to tell future things by
a prophesying spirit.--Ibid.  Should not the people seek of their God,
for the living of the dead?. . .Here is signified, that it is to God we
should pray to be directed, and not to seek of the dead, (that is, of
fortune-tellers dead in sin,) for the health of the living.

8:20. To the law rather, and to the testimony.  And if they speak not
according to this word, they shall not have the morning light.

8:21. And they shall pass by it, they shall fall, and be hungry:  and
when they shall be hungry, they will be angry, and curse their king,
and their God, and look upwards.

8:22. And they shall look to the earth, and behold trouble and
darkness, weakness and distress, and a mist following them, and they
cannot fly away from their distress.



Isaias Chapter 9


What joy shall come after afflictions by the birth and kingdom of
Christ; which shall flourish for ever.  Judgments upon Israel for their
sins.

9:1. At the first time the land of Zabulon, and the land of Nephtali
was lightly touched:  and at the last the way of the sea beyond the
Jordan of the Galilee of the Gentiles was heavily loaded.

9:2. The people that walked in darkness, have seen a great light:  to
them that dwelt in the region of the shadow of death, light is risen.

9:3. Thou hast multiplied the nation, and hast not increased the joy.
They shall rejoice before thee, as they that rejoice in the harvest, as
conquerors rejoice after taking a prey, when they divide the spoils.

9:4. For the yoke of their burden, and the rod of their shoulder, and
the sceptre of their oppressor thou hast overcome, as in the day of
Madian.

9:5. For every violent taking of spoils, with tumult, and garment
mingled with blood, shall be burnt, and be fuel for the fire.

9:6. For a CHILD IS BORN to us, and a son is given to us, and the
government is upon his shoulder:  and his name shall be called
Wonderful, Counsellor, God the Mighty, the Father of the world to come,
the Prince of Peace.

9:7. His empire shall be multiplied, and there shall be no end of
peace:  he shall sit upon the throne of David, and upon his kingdom; to
establish it and strengthen it with judgment and with justice, from
henceforth and for ever:  the zeal of the Lord of hosts will perform
this.

9:8. The Lord sent a word into Jacob, and it hath lighted upon Israel.

9:9. And all the people of Ephraim shall know, and the inhabitants of
Samaria that say in the pride and haughtiness of their heart:

9:10. The bricks are fallen down, but we will build with square stones:
they have cut down the sycamores, but we will change them for cedars.

9:11. And the Lord shall set up the enemies of Rasin over him, and
shall bring on his enemies in a crowd:

9:12. The Syrians from the east, and, the Philistines from the west:
and they shall devour Israel with open mouth.  For all this his
indignation is not turned away, but his hand is stretched out still.

9:13. And the people are not returned to him who hath struck them, and
have not sought after the Lord of hosts.

9:14. And the Lord shall destroy out of Israel the head and the tail,
him that bendeth down, and him that holdeth back, in one day.

9:15. The aged and honourable, he is the head:  and the prophet that
teacheth lies, he is the tail.

9:16. And they that call this people blessed, shall cause them to err:
and they that are called blessed, shall be thrown down, headlong.

9:17. Therefore the Lord shall have no joy in their young men:  neither
shall he have mercy on their fatherless, and widows:  for every one is a
hypocrite and wicked, and every mouth hath spoken folly.  For all this
his indignation is not turned away, but his hand is stretched out
still.

9:18. For wickedness is kindled as a fire, it shall devour the brier
and the thorn:  and shall kindle in the thicket of the forest, and it
shall be wrapped up in smoke ascending on high.

9:19. By the wrath of the Lord of hosts the land is troubled, and the
people shall be as fuel for the fire:  no man shall spare his brother.

9:20. And he shall turn to the right hand, and shall be hungry:  and
shall eat on the left hand, and shall not be filled:  every one shall
eat the flesh of his own arm:  Manasses Ephraim, and Ephraim Manasses,
and they together shall be against Juda.

9:21. After all these things his indignation is not turned away, but
his hand is stretched out still.



Isaias Chapter 10


Woe to the makers of wicked laws.  The Assyrian shall be a rod for
punishing Israel:  but for their pride they shall be destroyed:  and a
remnant of Israel saved.

10:1. Woe to them that make wicked laws:  and when they write, write
injustice:

10:2. To oppress the poor in judgment, and do violence to the cause of
the humble of my people:  that widows might be their prey, and that they
might rob the fatherless.

10:3. What will you do in the day of visitation, and of the calamity
which cometh from afar?  to whom will ye flee for help?  and where will
ye leave your glory?

10:4. That you be not bowed down under the bond, and fall with the
slain?  In all these things his anger is not turned away, but his hand
is stretched out still.

10:5. Woe to the Assyrian, he is the rod and the staff of my anger, and
my indignation is in their hands.

10:6. I will send him to a deceitful nation, and I will give him a
charge against the people of my wrath, to take away the spoils, and to
lay hold on the prey, and to tread them down like the mire of the
streets.

10:7. But he shall not take it so, and his heart shall not think so:
but his heart shall be set to destroy, and to cut off nations not a
few.

10:8. For he shall say:

10:9. Are not my princes as so many kings?  is not Calano as Charcamis:
and Emath as Arphad?  is not Samaria as Damascus?

10:10. As my hand hath found the kingdoms of the idol, so also their
idols of Jerusalem, and of Samaria.

10:11. Shall I not, as I have done to Samaria and her idols, so do to
Jerusalem and her idols?

10:12. And it shall come to pass, that when the Lord shall have
performed all his works in mount Sion, and in Jerusalem, I will visit
the fruit of the proud heart of the king of Assyria, and the glory of
the haughtiness of his eyes.

10:13. For he hath said:  By the strength of my own hand I have done it,
and by my own wisdom I have understood:  and I have removed the bounds
of the people, and have taken the spoils of the princes, and as a
mighty man hath pulled down them that sat on high.

10:14. And my hand hath found the strength of the people as a nest; and
as eggs are gathered, that are left, so have I gathered all the earth:
and there was none that moved the wing, or opened the mouth, or made
the least noise.

10:15. Shall the axe boast itself against him that cutteth with it?  or
shall the saw exalt itself against him by whom it is drawn?  as if a rod
should lift itself up against him that lifteth it up, and a staff exalt
itself, which is but wood.

10:16. Therefore the sovereign Lord, the Lord of hosts, shall send
leanness among his fat ones:  and under his glory shall be kindled a
burning, as it were the burning of a fire.

10:17. And the light of Israel shall be as a fire, and the Holy One
thereof as a flame:  and his thorns and his briers shall be set on fire,
and shall be devoured in one day.

10:18. And the glory of his forest, and of his beautiful hill, shall be
consumed from the soul even to the flesh, and he shall run away through
fear.

10:19. And they that remain of the trees of his forest shall be so few,
that they shall easily be numbered, and a child shall write them down.

10:20. And it shall come to pass in that day, that the remnant of
Israel, and they that shall escape of the house of Jacob, shall lean no
more upon him that striketh them:  but they shall lean upon the Lord the
Holy One of Israel, in truth.

10:21. The remnant shall be converted, the remnant, I say, of Jacob, to
the mighty God.

10:22. For if thy people, O Israel, shall be as the sand of the sea, a
remnant of them shall be converted, the consumption abridged shall
overflow with justice.

A remnant of them shall be converted. . .This was partly verified in the
children of Israel who remained after the devastations of the
Assyrians, in the time of king Ezechias:  and partly in the conversion
of a remnant of the Jews to the faithful of Christ.--Ibid.  The
consumption abridged, etc. . .That is, the number of them cut short, and
reduced to few, shall flourish in abundance of justice.

10:23. For the Lord God of hosts shall make a consumption, and an
abridgment in the midst of all the land.

10:24. Therefore, thus saith the Lord the God of hosts:  O my people
that dwellest in Sion, be not afraid of the Assyrian:  he shall strike
thee with his rod, and he shall lift up his staff over thee in the way
of Egypt.

10:25. For yet a little and a very little while, and my indignation
shall cease, and my wrath shall be upon their wickedness.

10:26. And the Lord of hosts shall raise up a scourge against him,
according to the slaughter of Madian in the rock of Oreb, and his rod
over the sea, and he shall lift it up in the way of Egypt.

10:27. And it shall come to pass in that day, that his burden shall be
taken away from off thy shoulder, and his yoke from off thy neck, and
the yoke shall putrefy at the presence of the oil.

At the presence of the oil. . .That is, by the sweet unction of divine
mercy.

10:28. He shall come into Aiath, he shall pass into Magron:  at Machmas
he shall lay up his carriages.

Into Aiath, etc. . .Here the prophet describes the march of the
Assyrians under Sennacherib; and the terror they should carry with
them; and how they should suddenly be destroyed.

10:29. They have passed in haste, Gaba is our lodging:  Rama was
astonished, Gabaath of Saul fled away.

10:30. Lift up thy voice, O daughter of Gallim, attend, O Laisa, poor
Anathoth.

10:31. Medemena is removed:  ye inhabitants of Gabim, take courage.

10:32. It is yet day enough, to remain in Nobe:  he shall shake his hand
against the mountain of the daughter of Sion, the hill of Jerusalem.

10:33. Behold the sovereign Lord of hosts shall break the earthen
vessel with terror, and the tall of stature shall be cut down, and the
lofty shall be humbled.

10:34. And the thickets of the forest shall be cut down with iron, and
Libanus with its high ones shall fall.



Isaias Chapter 11


Of the spiritual kingdom of Christ, to which all nations shall repair.

11:1. And there shall come forth a rod out of the root of Jesse, and a
flower shall rise up out of his root.

11:2. And the spirit of the Lord shall rest upon him:  the spirit of
wisdom, and of understanding, the spirit of counsel, and of fortitude,
the spirit of knowledge, and of godliness.

11:3. And he shall be filled with the spirit of the fear of the Lord,
He shall not judge according to the sight of the eyes, nor reprove
according to the hearing of the ears.

11:4. But he shall judge the poor with justice, and shall reprove with
equity the meek of the earth:  and he shall strike the earth with the
rod of his mouth, and with the breath of his lips he shall slay the
wicked.

11:5. And justice shall be the girdle of his loins:  and faith the
girdle of his reins.

11:6. The wolf shall dwell with the lamb:  and the leopard shall lie
down with the kid:  the calf and the lion, and the sheep shall abide
together, and a little child shall lead them.

11:7. The calf and the bear shall feed:  their young ones shall rest
together:  and the lion shall eat straw like the ox.

11:8. And the sucking child shall play on other hole of the asp:  and
the weaned child shall thrust his hand into the den of the basilisk.

11:9. They shall not hurt, nor shall they kill in all my holy mountain,
for the earth is filled with the knowledge of the Lord, as the covering
waters of the sea.

11:10. In that day the root of Jesse, who standeth for an ensign of the
people, him the Gentiles shall beseech, and his sepulchre shall be
glorious.

11:11. And it shall come to pass in that day, that the Lord shall set
his hand the second time to possess the remnant of his people, which
shall be left from the Assyrians, and from Egypt, and from Phetros, and
from Ethiopia, and from Elam, and from Sennaar, and from Emath, and
from the islands of the sea.

11:12. And he shall set up a standard unto the nations, and shall
assemble the fugitives of Israel, and shall gather together the
dispersed of Juda from the four quarters of the earth.

11:13. And the envy of Ephraim shall be taken away, and the enemies of
Juda shall perish:  Ephraim shall not envy Juda, and Juda shall not
fight against Ephraim.

11:14. But they shall fly upon the shoulders of the Philistines by the
sea, they together shall spoil the children of the east:  Edom, till
Moab shall be under the rule of their hand, and the children of Ammon
shall be obedient.

11:15. And the Lord shall lay waste the tongue of the sea of Egypt, and
shall lift up his hand over the river in the strength of his spirit:
and he shall strike it in the seven streams, so that men may pass
through it in their shoes.

11:16. And there shall be a highway for the remnant of my people, which
shall be left from the Assyrians:  as there was for Israel in the day
that he came up out of the land of Egypt.



Isaias Chapter 12


A canticle of thanksgiving for the benefits of Christ.

12:1. And thou shalt say in that day:  I will give thanks to thee, O
Lord, for thou wast angry with me:  thy wrath is turned away, and thou
hast comforted me.

12:2. Behold, God is my saviour, I will deal confidently, and will not
fear:  because the Lord is my strength, and my praise, and he is become
my salvation.

12:3. Thou shall draw waters with joy out of the saviour's fountains:

12:4. And you shall say in that day:  Praise ye the Lord, and call upon
his name:  make his works known among the people:  remember that his name
is high.

12:5. Sing ye to the Lord, for he hath done great things:  shew this
forth in all the earth.

12:6. Rejoice, and praise, O thou habitation of Sion:  for great is he
that is in the midst of thee, the Holy One of Israel.



Isaias Chapter 13


The desolation of Babylon.

13:1. The burden of Babylon which Isaias the son of Amos saw.

The burden of Babylon. . .That is, a prophecy against Babylon.

13:2. Upon the dark mountain lift ye up a banner, exalt the voice, lift
up the hand, and let the rulers go into the gates.

13:3. I have commanded my sanctified ones, and have called my strong
ones in my wrath, them that rejoice in my glory.

13:4. The noise of a multitude in the mountains, as it were of many
people, the noise of the sound of kings, of nations gathered together:
the Lord of hosts hath given charge to the troops of war.

13:5. To them that come from a country afar off, from the end of
heaven:  the Lord and the instruments of his wrath, to destroy the whole
land.

13:6. Howl ye, for the day of the Lord is near:  it shall come as a
destruction from the Lord.

13:7. Therefore shall all hands be faint, and every heart of man shall
melt,

13:8. And shall be broken.  Gripings and pains, shall take hold of them,
they shall be in pain as a woman in labour.  Every one shall be amazed
at his neighbour, their countenances shall be as faces burnt.

13:9. Behold, the day of the Lord shall come, a cruel day, and full of
indignation, and of wrath, and fury, to lay the land desolate, and to
destroy the sinners thereof out of it.

13:10. For the stars of heaven, and their brightness shall not display
their light:  the sun shall be darkened in his rising, and the moon
shall not shine with her light.

13:11. And I will visit the evils of the world, and against the wicked
for their iniquity:  and I will make the pride of infidels to cease, and
will bring down the arrogancy of the mighty.

13:12. A man shall be more precious than gold, yea a man than the
finest of gold.

13:13. For this I will trouble the heaven:  and the earth shall be moved
out of her place, for the indignation of the Lord of hosts, and for the
day of his fierce wrath.

13:14. And they shall be as a doe fleeing away, and as a sheep:  and
there shall be none to gather them together:  every man shall turn to
his own people, and every one shall flee to his own land.

13:15. Every one that shall be found, shall be slain:  and every one
that shall come to their aid, shall fall by the sword.

13:16. Their inhabitants shall be dashed in pieces before their eyes:
their houses shall be pillaged, and their wives shall be ravished.

13:17. Behold I will stir up the Medes against them, who shall not seek
silver, nor desire gold:

13:18. But with their arrows they shall kill the children, and shall
have no pity upon the sucklings of the womb, and their eye shall not
spare their sons.

13:19. And that Babylon, glorious among kingdoms, the famous pride of
the Chaldeans, shall be even as the Lord destroyed Sodom and Gomorrha.

13:20. It shall no more be inhabited for ever, and it shall not be
founded unto generation and generation:  neither shall the Arabian pitch
his tents there, nor shall shepherds rest there.

13:21. But wild beasts shall rest there, and their houses shall be
filled with serpents, and ostriches shall dwell there, and the hairy
ones shall dance there:

13:22. And owls shall answer one another there, in the houses thereof,
and sirens in the temples of pleasure.



Isaias Chapter 14


The restoration of Israel after their captivity.  The parable or song
insulting over the king of Babylon.  A prophecy against the Philistines.

14:1. Her time is near at hand, and her days shall not be prolonged.
For the Lord will have mercy on Jacob, and will yet choose out of
Israel, and will make them rest upon their own ground:  and the stranger
shall be joined with them, and shall adhere to the house of Jacob.

14:2. And the people shall take them, and bring them into their place:
and the house of Israel shall possess them in the land of the Lord for
servants and handmaids:  and they shall make them captives that had
taken them, and shall subdue their oppressors.

14:3. And it shall come to pass in that day, that when God shall give
thee rest from thy labour, and from thy vexation, and from the hard
bondage, wherewith thou didst serve before,

14:4. Thou shalt take up this parable against the king of Babylon, and
shalt say:  How is the oppressor come to nothing, the tribute hath
ceased?

14:5. The Lord hath broken the staff of the wicked, the rod of the
rulers,

14:6. That struck the people in wrath with an incurable wound, that
brought nations under in fury, that persecuted in a cruel manner.

14:7. The whole earth is quiet and still, it is glad and hath rejoiced.

14:8. The fir trees also have rejoiced over thee, and the cedars of
Libanus, saying:  Since thou hast slept, there hath none come up to cut
us down.

14:9. Hell below was in an uproar to meet thee at thy coming, it
stirred up the giants for thee.  All the princes of the earth are risen
up from their thrones, all the princes of nations.

14:10. All shall answer, and say to thee:  Thou also art wounded as well
as we, thou art become like unto us.

14:11. Thy pride is brought down to hell, thy carcass is fallen down:
under thee shall the moth be strewed, and worms shall be thy covering.

14:12. How art thou fallen from heaven, O Lucifer, who didst rise in
the morning?  how art thou fallen to the earth, that didst wound the
nations?

O Lucifer. . .O day star.  All this, according to the letter, is spoken
of the king of Babylon.  It may also be applied, in a spiritual sense,
to Lucifer the prince of devils, who was created a bright angel, but
fell by pride and rebellion against God.

14:13. And thou saidst in thy heart:  I will ascend into heaven, I will
exalt my throne above the stars of God, I will sit in the mountain of
the covenant, in the sides of the north.

14:14. I will ascend above the height of the clouds, I will be like the
most High.

14:15. But yet thou shalt be brought down to hell, into the depth of
the pit.

14:16. They that shall see thee, shall turn toward thee, and behold
thee.  Is this the man that troubled the earth, that shook kingdoms,

14:17. That made the world a wilderness, and destroyed the cities
thereof, that opened not the prison to his prisoners?

14:18. All the kings of the nations have all of them slept in glory,
every one in his own house.

14:19. But thou art cast out of thy grave, as an unprofitable branch
defiled, and wrapped up among them that were slain by the sword, and
art gone down to the bottom of the pit, as a rotten carcass.

14:20. Thou shalt not keep company with them, even in burial:  for thou
hast destroyed thy land, thou hast slain thy people:  the seed of the
wicked shall not be named for ever.

14:21. Prepare his children for slaughter for the iniquity of their
fathers:  they shall not rise up, nor inherit the land, nor fill the
face of the world with cities.

14:22. And I will rise up against them, saith the Lord of hosts:  and I
will destroy the name of Babylon, and the remains, and the bud, and the
offspring, saith the Lord.

14:23. And I will make it a possession for the ericius and pools of
waters, and I will sweep it and wear it out with a besom, saith the
Lord of hosts.

14:24. The Lord of hosts hath sworn, saying:  Surely as I have thought,
so shall it be:  and as I have purposed,

14:25. So shall it fall out:  That I will destroy the Assyrian in my
land, and upon my mountains tread him under foot:  and his yoke shall be
taken away from them, and his burden shall be taken off their shoulder.

14:26. This is the counsel, that I have purposed upon all the earth,
and this is the hand that is stretched out upon all nations.

14:27. For the Lord of hosts hath decreed, and who can disannul it?  and
his hand is stretched out:  and who shall turn it away?

14:28. In the year that king Achaz died, was this burden:

14:29. Rejoice not thou, whole Philistia, that the rod of him that
struck thee is broken in pieces:  for out of the root of the serpent
shall come forth a basilisk, and his seed shall swallow the bird.

14:30. And the firstborn of the poor shall be fed, and the poor shall
rest with confidence:  and I will make thy root perish with famine, and
I will kill thy remnant.

14:31. Howl, O gate; cry, O city:  all Philistia is thrown down:  for a
smoke shall come from the north, and there is none that shall escape
his troop.

14:32. And what shall be answered to the messengers of the nations?
That the Lord hath founded Sion, and the poor of his people shall hope
in him.



Isaias Chapter 15


A prophecy of the desolation of the Moabites.

15:1. The burden of Moab.  Because in the night Ar of Moab is laid
waste, it is silent:  because the wall of Moab is destroyed in the
night, it is silent.

15:2. The house is gone up, and Dibon to the high places to mourn over
Nabo, and over Medaba, Moab hath howled:  on all their heads shall be
baldness, and every beard shall be shaven.

15:3. In their streets they are girded with sackcloth:  on the tops of
their houses, and in their streets all shall howl and come down
weeping.

15:4. Hesebon shall cry, and Eleale, their voice is heard even to Jasa.
For this shall the well appointed men of Moab howl, his soul shall howl
to itself.

15:5. My heart shall cry to Moab, the bars thereof shall flee unto
Segor a heifer of three years old:  for by the ascent of Luith they
shall go up weeping:  and in the way of Oronaim they shall lift up a cry
of destruction.

15:6. For the waters of Nemrim shall be desolate, for the grass is
withered away, the spring is faded, all the greenness is perished.

15:7. According to the greatness of their work, is their visitation
also:  they shall lead them to the torrent of the willows.

Torrent of the willows. . .That is, as some say, the waters of Babylon:
others render it, a valley of the Arabians.

15:8. For the cry is gone round about the border of Moab:  the howling
thereof unto Gallim, and unto the well of Elim the cry thereof.

15:9. For the waters of Dibon are filled with blood:  for I will bring
more upon Dibon:  the lion upon them that shall flee of Moab, and upon
the remnant of the land.



Isaias Chapter 16


The prophet prayeth for Christ's coming.  The affliction of the Moabites
for their pride.

16:1. Send forth, O Lord, the lamb, the ruler of the earth, from Petra
of the desert, to the mount of the daughter of Sion.

16:2. And it shall come to pass, that as a bird fleeing away, and as
young ones flying out of the nest, so shall the daughters of Moab be in
the passage of Arnon.

16:3. Take counsel, gather a council:  make thy shadow as the night in
the midday:  hide them that flee, and betray not them that wander about.

16:4. My fugitives shall dwell with thee:  O Moab, be thou a covert to
them from the face of the destroyer:  for the dust is at an end, the
wretch is consumed:  he hath failed, that trod the earth under foot.

16:5. And a throne shall be prepared in mercy, and one shall sit upon
it in truth in the tabernacle of David, judging and seeking judgment
and quickly rendering that which is just.

16:6. We have heard of the pride of Moab, he is exceeding proud:  his
pride and his arrogancy, and his indignation is more than his strength.

16:7. Therefore shall Moab howl to Moab, every one shall howl:  to them
that rejoice upon the brick walls, tell ye their stripes.

16:8. For the suburbs of Hesebon are desolate, and the lords of the
nations have destroyed the vineyard of Sabama:  the branches thereof
have reached even to Jazer:  they have wandered in the wilderness, the
branches thereof are left, they are gone over the sea.

16:9. Therefore I will lament with the weeping of Jazer the vineyard of
Sabama:  I will water thee with my tears, O Hesebon, and Eleale:  for the
voice of the treaders hath rushed in upon thy vintage, and upon thy
harvest.

16:10. And gladness and joy shall be taken away from Carmel, and there
shall be no rejoicing nor shouting in the vineyards.  He shall not tread
out wine in the press that was wont to tread it out:  the voice of the
treaders I have taken away.

Carmel. . .This name is often taken to signify a fair and fruitful hill
or field, such as mount Carmel is.

16:11. Wherefore my bowels shall sound like a harp for Moab, and my
inward parts for the brick wall.

16:12. And it shall come to pass, when it is seen that Moab is wearied
on his high places, that he shall go in to his sanctuaries to pray, and
shall not prevail.

16:13. This is the word, that the Lord spoke to Moab from that time:

16:14. And now the Lord hath spoken, saying:  In three years, as the
years of a hireling, the glory of Moab shall be taken away for all the
multitude of the people, and it shall be left small and feeble, not
many.



Isaias Chapter 17


Judgments upon Damascus and Samaria.  The overthrow of the Assyrians.

17:1. The burden of Damascus.  Behold Damascus shall cease to be a city,
and shall be as a ruinous heap of stones.

17:2. The cities of Aroer shall be left for flocks, and they shall rest
there, and there shall be none to make them afraid.

17:3. And aid shall cease from Ephraim, and the kingdom from Damascus:
and the remnant of Syria shall be as the glory of the children of
Israel:  saith the Lord of hosts.

17:4. And it shall come to pass in that day, that the glory of Jacob
shall be made thin, and the fatness of his flesh shall grow lean.

17:5. And it shall be as when one gathereth in the harvest that which
remaineth, and his arm shall gather the ears of corn:  and it shall be
as he that seeketh ears in the vale of Raphaim.

17:6. And the fruit thereof that shall be left upon it, shall be as one
cluster of grapes, and as the shaking of the olive tree, two or three
berries in the top of a bough, or four or five upon the top of the
tree, saith the Lord the God of Israel.

17:7. In that day man shall bow down himself to his Maker, and his eyes
shall look to the Holy One of Israel.

17:8. And he shall not look to the altars which his hands made; and he
shall not have respect to the things that his fingers wrought, such as
groves and temples.

17:9. In that day his strong cities shall be forsaken, as the ploughs,
and the corn that were left before the face of the children of Israel,
and thou shalt be desolate.

That were left. . .Viz., by the Chanaanites, when the children of Israel
came into their land.

17:10. Because thou hast forgotten God thy saviour, and hast not
remembered thy strong helper:  therefore shalt thou plant good plants,
and shalt sow strange seed.

17:11. In the day of thy planting shall be the wild grape, and in the
morning thy seed shall flourish:  the harvest is taken away in the day
of inheritance, and shall grieve thee much.

17:12. Woe to the multitude of many people, like the multitude of the
roaring sea:  and the tumult of crowds, like the noise of many waters.

The multitude, etc. . .This and all that follows to the end of the
chapter, relates to the Assyrian army under Sennacherib.

17:13. Nations shall make a noise like the noise of waters overflowing,
but he shall rebuke him, and he shall flee far off:  and he shall be
carried away as the dust of the mountains before the wind, and as a
whirlwind before a tempest.

17:14. In the time of the evening, behold there shall be trouble:  the
morning shall come, and he shall not be:  this is the portion of them
that have wasted us, and the lot of them that spoiled us.



Isaias Chapter 18


A woe to the Ethiopians, who fed Israel with vain hopes, their future
conversion.

18:1. Woe to the land, the winged cymbal, which is beyond the rivers of
Ethiopia,

18:2. That sendeth ambassadors by the sea, and in vessels of bulrushes
upon the waters.  Go, ye swift angels, to a nation rent and torn in
pieces:  to a terrible people, after which there is no other:  to a
nation expecting and trodden underfoot, whose land the rivers have
spoiled.

Angels. . .Or messengers.

18:3. All ye inhabitants of the world, who dwell on the earth, when the
sign shall be lifted up on the mountains, you shall see, and you shall
hear the sound of the trumpet.

18:4. For thus saith the Lord to me:  I will take my rest, and consider
in my place, as the noon light is clear, and as a cloud of dew in the
day of harvest.

18:5. For before the harvest it was all flourishing, and it shall bud
without perfect ripeness, and the sprigs thereof shall be cut off with
pruning hooks:  and what is left shall be cut away and shaken out.

18:6. And they shall be left together to the birds of the mountains,
and the beasts of the earth:  and the fowls shall be upon them all the
summer, and all the beasts of the earth shall winter upon them.

18:7. At that time shall a present be brought to the Lord of hosts,
from a people rent and torn in pieces:  from a terrible people, after
which there hath been no other:  from a nation expecting, expecting and
trodden under foot, whose land the rivers have spoiled, to the place of
the name of the Lord of hosts, to mount Sion.



Isaias Chapter 19


The punishment of Egypt:  their call to the church.

19:1. The burden of Egypt.  Behold the Lord will ascend upon a swift
cloud, and will enter into Egypt, and the idols of Egypt shall be moved
at his presence, and the heart of Egypt shall melt in the midst
thereof.

19:2. And I will set the Egyptians to fight against the Egyptians:  and
they shall fight brother against brother, and friend against friend,
city against city, kingdom against kingdom.

19:3. And the spirit of Egypt shall be broken in the bowels thereof,
and I will cast down their counsel:  and they shall consult their idols,
and their diviners, and their wizards, and soothsayers.

19:4. And I will deliver Egypt into the hand of cruel masters, and a
strong king shall rule over them, saith the Lord the God of hosts.

19:5. And the water of the sea shall be dried up, and the river shall
be wasted and dry.

19:6. And the rivers shall fail:  the streams of the banks shall be
diminished, and be dried up.  The reed and the bulrush shall wither
away.

19:7. The channel of the river shall be laid bare from its fountain,
and every thing sown by the water shall be dried up, it shall wither
away, and shall be no more.

19:8. The fishers also shall mourn, and all that cast a hook into the
river shall lament, and they that spread nets upon the waters shall
languish away.

19:9. They shall be confounded that wrought in flax, combing and
weaving fine linen.

19:10. And its watery places shall be dry, all they shall mourn that
made pools to take fishes.

19:11. The princes of Tanis are become fools, the wise counsellors of
Pharao have given foolish counsel:  how will you say to Pharao:  I am the
son of the wise, the son of ancient kings?

19:12. Where are now thy wise men?  let them tell thee, and shew what
the Lord of hosts hath purposed upon Egypt.

19:13. The princes of Tanis are become fools, the princes of Memphis
are gone astray, they have deceived Egypt, the stay of the people
thereof.

19:14. The Lord hath mingled in the midst thereof the spirit of
giddiness:  and they have caused Egypt to err in all its works, as a
drunken man staggereth and vomiteth.

19:15. And there shall be no work for Egypt, to make head or tail, him
that bendeth down, or that holdeth back.

19:16. In that day Egypt shall be like unto women, and they shall be
amazed, and afraid, because of the moving of the hand of the Lord of
hosts, which he shall move over it.

19:17. And the land of Juda shall be a terror to Egypt:  everyone that
shall remember it shall tremble because of the counsel of the Lord of
hosts, which he hath determined concerning it.

19:18. In that day there shall be five cities in the land of Egypt,
speaking the language of Chanaan, and swearing by the Lord of hosts:
one shall be called the city of the sun.

19:19. In that day there shall be an altar of the Lord in the midst of
the land of Egypt, and a monument of the Lord at the borders thereof:

19:20. It shall be for a sign, and for a testimony to the Lord of hosts
in the land of Egypt.  For they shall cry to the Lord because of the
oppressor, and he shall send them a Saviour and a defender to deliver
them.

19:21. And the Lord shall be known by Egypt, and the Egyptians shall
know the Lord in that day, and shall worship him with sacrifices and
offerings:  and they shall make vows to the Lord, and perform them.

19:22. And the Lord shall strike Egypt with a scourge, and shall heal
it, and they shall return to the Lord, and he shall be pacified towards
them, and heal them.

19:23. In that day there shall be a way from Egypt to the Assyrians,
and the Assyrian shall enter into Egypt, and the Egyptian to the
Assyrians, and the Egyptians shall serve the Assyrian.

19:24. In that day shall Israel be the third to the Egyptian and the
Assyrian:  a blessing in the midst of the land,

19:25. Which the Lord of hosts hath blessed, saying:  Blessed be my
people of Egypt, and the work of my hands to the Assyrian:  but Israel
is my inheritance.



Isaias Chapter 20


The ignominious captivity of the Egyptians, and the Ethiopians.

20:1. In the year that Tharthan entered into Azotus, when Sargon the
king of the Assyrians had sent him, and he had fought against Azotus,
and had taken it:

20:2. At that same time the Lord spoke by the hand of Isaias the son of
Amos, saying Go, and loose the sackcloth from off thy loins, and take
off thy shoes from thy feet.  And he did so, and went naked, and
barefoot.

20:3. And the Lord said:  As my servant Isaias hath walked, naked and
barefoot, it shall be a sign and a wonder of three years upon Egypt,
and upon Ethiopia,

20:4. So shall the king of the Assyrians lead away the prisoners of
Egypt, and the captivity of Ethiopia, young and old, naked and
barefoot, with their buttocks uncovered to the shame of Egypt.

20:5. And they shall be afraid, and ashamed of Ethiopia their hope, and
of Egypt their glory.

20:6. And the inhabitants of this isle shall say in that day:  Lo this
was our hope, to whom we fled for help, to deliver us from the face of
the king of the Assyrians:  and how shall we be able to escape?



Isaias Chapter 21


The destruction of Babylon by the Medes and Persians:  a prophecy
against the Edomites and the Arabians.

21:1. The burden of the desert of the sea.  As whirlwinds come from the
south, it cometh from the desert from a terrible land.

The desert of the sea. . .So Babylon is here called, because from a city
as full of people as the sea is with water, it was become a desert.

21:2. A grievous vision is told me:  he that is unfaithful dealeth
unfaithfully:  and he that is a spoiler, spoileth.  Go up, O Elam,
besiege, O Mede:  I have made all the mourning thereof to cease.

O Elam. . .That is, O Persia.

21:3. Therefore are my loins filled with pain, anguish hath taken hold
of me, as the anguish of a woman in labour:  I fell down at the hearing
of it, I was troubled at the seeing of it.

21:4. My heart failed, darkness amazed me:  Babylon my beloved is become
a wonder to me.

21:5. Prepare the table, behold in the watchtower them that eat and
drink:  arise, ye princes, take up the shield.

21:6. For thus hath the Lord said to me:  Go, and set a watchman:  and
whatsoever he shall see, let him tell.

21:7. And he saw a chariot with two horsemen, a rider upon an ass, and
a rider upon a camel:  and he beheld them diligently with much heed.

A rider upon an ass, etc. . .These two riders are the kings of the
Persians and Medes.

21:8. And a lion cried out:  I am upon the watchtower of the Lord,
standing continually by day:  and I am upon my ward, standing whole
nights.

And a lion cried out. . .That is, I Isaias seeing the approaching ruin
of Babylon, have cried out as a lion roaring.

21:9. Behold this man cometh, the rider upon the chariot with two
horsemen, and he answered, and said:  Babylon is fallen, she is fallen,
and all the graven gods thereof are broken unto the ground.

21:10. O my thrashing, and the children of my floor, that which I have
heard of the Lord of hosts, the God of Israel, I have declared unto
you.

21:11. The burden of Duma calleth to me out of Seir:  Watchman, what of
the night?  watchman, what of the night?

Duma. . .That is, Idumea, or Edom.

21:12. The watchman said:  The morning cometh, also the night:  if you
seek, seek:  return, come.

21:13. The burden in Arabia.  In the forest at evening you shall sleep,
in the paths of Dedanim.

21:14. Meeting the thirsty bring him water, you that inhabit the land
of the south, meet with bread him that fleeth.

21:15. For they are fled from before the swords, from the sword that
hung over them, from the bent bow, from the face of a grievous battle.

21:16. For thus saith the Lord to me:  Within a year, according to the
years of a hireling, all the glory of Cedar shall be taken away.

Cedar. . .Arabia.

21:17. And the residue of the number of strong archers of the children
of Cedar shall be diminished:  for the Lord the God of Israel hath
spoken it.



Isaias Chapter 22


The prophet laments the devastation of Juda.  He foretells the
deprivation of Sobna, and the substitution of Eliacim, a figure of
Christ.

22:1. The burden of the valley of vision.  What aileth thee also, that
thou too art wholly gone up to the housetops?

The valley of vision. . .Jerusalem.  The temple of Jerusalem was built
upon mount Moria, or the mountain of vision.  But the city is here
called the valley of vision; either because it was lower than the
temple, or because of the low condition to which it was to be reduced.

22:2. Full of clamour, a populous city, a joyous city:  thy slain are
not slain by the sword, nor dead in battle.

22:3. All the princes are fled together, and are bound hard:  all that
were found, are bound together, they are fled far off.

22:4. Therefore have I said:  Depart from me, I will weep bitterly:
labour not to comfort me, for the devastation of the daughter of my
people.

22:5. For it is a day of slaughter and of treading down, and of weeping
to the Lord the God of hosts in the valley of vision, searching the
wall, and magnificent upon the mountain.

22:6. And Elam took the quiver, the chariot of the horseman, and the
shield was taken down from the wall.

22:7. And thy choice valleys shall be full of chariots, and the
horsemen shall place themselves in the gate.

22:8. And the covering of Juda shall be discovered, and thou shalt see
in that day the armoury of the house of the forest.

22:9. And you shall see the breaches of the city of David, that they
are many:  and you have gathered together the waters of the lower pool,

22:10. And have numbered the houses of Jerusalem, and broken down
houses to fortify the wall.

22:11. And you made a ditch between the two walls for the water of the
old pool:  and you have not looked up to the maker thereof, nor regarded
him even at a distance, that wrought it long ago.

22:12. And the Lord, the God of hosts, in that day shall call to
weeping, and to mourning, to baldness, and to girding with sackcloth:

22:13. And behold joy and gladness, killing calves, and slaying rams,
eating flesh, and drinking wine:  Let us eat and drink; for to morrow we
shall die.

22:14. And the voice of the Lord of hosts was revealed in my ears:
Surely this iniquity shall not be forgiven you till you die, saith the
Lord God of hosts.

22:15. Thus saith the Lord God of hosts:  Go, get thee in to him that
dwelleth in the tabernacle, to Sobna who is over the temple:  and thou
shalt say to him:

22:16. What dost thou here, or as if thou wert somebody here?  for thou
hast hewed thee out a sepulchre here, thou hast hewed out a monument
carefully in a high place, a dwelling for thyself in a rock.

22:17. Behold the Lord will cause thee to be carried away, as a cock is
carried away, and he will lift thee up as a garment.

22:18. He will crown thee with a crown of tribulation, he will toss
thee like a ball into a large and spacious country:  there shalt thou
die, and there shall the chariot of thy glory be, the shame of the
house of thy Lord.

22:19. And I will drive thee out from thy station, and depose thee from
thy ministry.

22:20. And it shall come to pass in that day, that I will call my
servant Eliacim the son of Helcias,

22:21. And I will clothe him with thy robe, and will strengthen him
with thy girdle, and will give thy power into his hand:  and he shall be
as a father to the inhabitants of Jerusalem, and to the house of Juda.

22:22. And I will lay the key of the house of David upon his shoulder:
and he shall open, and none shall shut:  and he shall shut, and none
shall open.

22:23. And I will fasten him as a peg in a sure place, and he shall be
for a throne of glory to the house of his father.

22:24. And they shall hang upon him all the glory of his father's
house, divers kinds of vessels, every little vessel, from the vessels
of cups even to every instrument of music.

22:25. In that day, saith the Lord of hosts, shall the peg be removed,
that was fastened in the sure place:  and it shall be broken and shall
fall:  and that which hung thereon, shall perish, because the Lord hath
spoken it.



Isaias Chapter 23


The destruction of Tyre.  It shall be repaired again after seventy
years.

23:1. The burden of Tyre.  Howl, ye ships of the sea, for the house is
destroyed, from whence they were wont to come:  from the land of Cethim
it is revealed to them.

23:2. Be silent, you that dwell in the island:  the merchants of Sidon
passing over the sea, have filled thee.

23:3. The seed of the Nile in many waters, the harvest of the river is
her revenue:  and she is become the mart of the nations.

23:4. Be thou ashamed, O Sidon:  for the sea speaketh, even the strength
of the sea, saying:  I have not been in labour, nor have I brought
forth, nor have I nourished up young men, nor brought up virgins.

23:5. When it shall be heard in Egypt, they will be sorry when they
shall hear of Tyre:

23:6. Pass over the seas, howl, ye inhabitants of the island.

23:7. Is not this your city, which gloried from of old in her
antiquity?  her feet shall carry her afar off to sojourn.

23:8. Who hath taken this counsel against Tyre, that was formerly
crowned, whose merchants were princes, and her traders the nobles of
the earth?

23:9. The Lord of hosts hath designed it, to pull down the pride of all
glory, and bring to disgrace all the glorious ones of the earth.

23:10. Pass thy land as a river, O daughter of the sea, thou hast a
girdle no more.

23:11. He stretched out his hand over the sea, he troubled kingdoms:
the Lord hath given a charge against Chanaan, to destroy the strong
ones thereof.

23:12. And he said:  Thou shalt glory no more, O virgin daughter of
Sidon, who art oppressed:  arise and sail over to Cethim, there also
thou shalt have no rest.

23:13. Behold the land of the Chaldeans, there was not such a people,
the Assyrians founded it:  they have led away the strong ones thereof
into captivity, they have destroyed the houses thereof, they have,
brought it to ruin.

23:14. Howl, O ye ships of the sea, for your strength is laid waste.

23:15. And it shall come to pass in that day that thou, O Tyre, shalt
be forgotten, seventy years, according to the days of one king:  but
after seventy years, there shall be unto Tyre as the song of a harlot.

23:16. Take a harp, go about the city, harlot that hast been forgotten:
sing well, sing many a song, that thou mayst be remembered.

23:17. And it shall come to pass after seventy years, that the Lord
will visit Tyre, and will bring her back again to her traffic:  and she
shall commit fornication again with all the kingdoms of the world upon
the face of the earth.

23:18. And her merchandise and her hire shall be sanctified to the
Lord:  they shall not be kept in store, nor laid up:  for her merchandise
shall be for them that shall dwell before the Lord, that they may eat
unto fulness, and be clothed for a continuance.

Sanctified to the Lord. . .This alludes to the conversion of the
Gentiles.



Isaias Chapter 24


The judgments of God upon all the sinners of the world.  A remnant shall
joyfully praise him.

24:1. Behold the Lord shall lay waste the earth, and shall strip it,
and shall afflict the face thereof, and scatter abroad the inhabitants
thereof.

24:2. And it shall be as with the people, so with the priest:  and as
with the servant so with his master:  as with the handmaid, so with her
mistress:  as with the buyer, so with the seller:  as with the lender, so
with the borrower:  as with him that calleth for his money, so with him
that oweth.

24:3. With desolation shall the earth be laid waste, and it shall be
utterly spoiled:  for the Lord hath spoken this word.

24:4. The earth mourned, and faded away, and is weakened:  the world
faded away, the height of the people of the earth is weakened.

24:5. And the earth is infected by the inhabitants thereof:  because
they have transgressed the laws, they have changed the ordinance, they
have broken the everlasting covenant.

24:6. Therefore shall a curse devour the earth, and the inhabitants
thereof shall sin:  and therefore they that dwell therein shall be mad,
and few men shall be left.

24:7. The vintage hath mourned, the vine hath languished away, all the
merry have sighed.

24:8. The mirth of timbrels hath ceased, the noise of them that rejoice
is ended, the melody of the harp is silent.

24:9. They shall not drink wine with a song:  the drink shall be bitter
to them that drink it.

24:10. The city of vanity is broken down, every house is shut up, no
man cometh in.

24:11. There shall be a crying for wine in the streets:  all mirth is
forsaken:  the joy of the earth is gone away.

24:12. Desolation is left in the city, and calamity shall oppress the
gates.

24:13. For it shall be thus in the midst of the earth, in the midst of
the people, as if a few olives, that remain, should be shaken out of
the olive tree:  or grapes, when the vintage is ended.

24:14. These shall lift up their voice, and shall give praise:  when the
Lord shall be glorified, they shall make a joyful noise from the sea.

24:15. Therefore glorify ye the Lord in instruction:  the name of the
Lord God of Israel in the islands of the sea.

24:16. From the ends of the earth we have heard praises, the glory of
the just one.  And I said:  My secret to myself, my secret to myself, woe
is me:  the prevaricators have prevaricated, and with the prevarication
of transgressors they have prevaricated.

24:17. Fear, and the pit, and the snare are upon thee, O thou
inhabitant of the earth.

24:18. And it shall come to pass, that he that shall flee from the
noise of the fear, shall fall into the pit:  and he that shall rid
himself out of the pit, shall be taken in the snare:  for the
flood-gates from on high are opened, and the foundations of the earth
shall be shaken.

24:19. With breaking shall the earth be broken, with crushing shall the
earth be crushed, with trembling shall the earth be moved.

24:20. With shaking shall the earth be shaken as a drunken man, and
shall be removed as the tent of one night:  and the iniquity thereof
shall be heavy upon it, and it shall fall, and not rise again.

24:21. And it shall come to pass, that in that day the Lord shall visit
upon the host of heaven on high, and upon the kings of the earth, on
the earth.

The host of heaven on high. . .The stars, which in many places of the
Scripture are so called.  Some commentators explain that these words
here signify the demons of the air.

24:22. And they shall be gathered together as in the gathering of one
bundle into the pit, and they shall be shut up there in prison:  and
after many days they shall be visited.

24:23. And the moon shall blush, and the sun shall be ashamed, when the
Lord of hosts shall reign in mount Sion, and in Jerusalem, and shall be
glorified in the sight of his ancients.



Isaias Chapter 25


A canticle of thanksgiving for God's judgments and benefits.

25:1. O Lord, thou art my God, I will exalt O thee, and give glory to
thy name:  for thou hast done wonderful things, thy designs of old
faithful, amen.

25:2. For thou hast reduced the city to a heap, the strong city to
ruin, the house of strangers, to be no city, and to be no more built up
for ever.

25:3. Therefore shall a strong people praise thee, the city of mighty
nations shall fear thee.

25:4. Because thou hast been a strength to the poor, a strength to the
needy in his distress:  a refuge from the whirlwind, a shadow from the
heat.  For the blast of the mighty is like a whirlwind beating against a
wall.

25:5. Thou shalt bring down the tumult of strangers, as heat in thirst:
and as with heat under a burning cloud, thou shalt make the branch of
the mighty to wither away.

25:6. And the Lord of hosts shall make unto all people in this
mountain, a feast of fat things, a feast of wine, of fat things full of
marrow, of wine purified from the lees.

25:7. And he shall destroy in this mountain the face of the bond with
which all people were tied, and the web that he began over all nations.

25:8. He shall cast death down headlong for ever:  and the Lord God
shall wipe away tears from every face, and the reproach of his people
he shall take away from off the whole earth:  for the Lord hath spoken
it.

25:9. And they shall say in that day:  Lo, this is our God, we have
waited for him, and he will save us:  this is the Lord, we have
patiently waited for him, we shall rejoice and be joyful in his
salvation.

25:10. For the hand of the Lord shall rest in this mountain:  and Moab
shall be trodden down under him, as straw is broken in pieces with the
wain.

Moab. . .That is, the reprobate, whose eternal punishment, from which
they can no way escape, is described under these figures.

25:11. And he shall stretch forth his hands under him, as he that
swimmeth stretcheth forth his hands to swim:  and he shall bring down
his glory with the dashing of his hands.

25:12. And the bulwarks of thy high walls shall fall, and be brought
low, and shall be pulled down to the ground, even to the dust.



Isaias Chapter 26


A canticle of thanks for the deliverance of God's people.

26:1. In that day shall this canticle be sung in the land of Juda.  Sion
the city of our strength a saviour, a wall and a bulwark shall be set
therein.

26:2. Open ye the gates, and let the just nation, that keepeth the
truth, enter in.

26:3. The old error is passed away:  thou wilt keep peace:  peace,
because we have hoped in thee.

26:4. You have hoped in the Lord for evermore, in the Lord God mighty
for ever.

26:5. For he shall bring down them that dwell on high, the high city he
shall lay low.  He shall bring it down even to the ground, he shall pull
it down even to the dust.

26:6. The foot shall tread it down, the feet of the poor, the steps of
the needy.

26:7. The way of the just is right, the path of the just is right to
walk in.

26:8. And in the way of thy judgments, O Lord, we have patiently waited
for thee:  thy name, and thy remembrance are the desire of the soul.

26:9. My soul hath desired thee in the night:  yea, and with my spirit
within me in the morning early I will watch to thee.  When thou shalt do
thy judgments on the earth, the inhabitants of the world shall learn
justice.

26:10. Let us have pity on the wicked, but he will not learn justice:
in the land of the saints he hath done wicked things, and he shall not
see the glory of the Lord.

26:11. Lord, let thy hand be exalted, and let them not see:  let the
envious people see, and be confounded:  and let fire devour thy enemies.

26:12. Lord, thou wilt give us peace:  for thou hast wrought all our
works for us.

26:13. O Lord our God, other lords besides thee have had dominion over
us, only in thee let us remember thy name.

26:14. Let not the dead live, let not the giants rise again:  therefore
hast visited and destroyed them, and hast destroyed all their memory.

26:15. Thou hast been favourable to the nation, O Lord, thou hast been
favourable to the nation:  art thou glorified?  thou hast removed all the
ends of the earth far off.

26:16. Lord, they have sought after thee in distress, in the
tribulation of murmuring thy instruction was with them.

26:17. As a woman with child, when she draweth near the time of her
delivery, is in pain, and crieth out in her pangs:  so are we become in
thy presence, O Lord.

26:18. We have conceived, and been as it were in labour, and have
brought forth wind:  we have not wrought salvation on the earth,
therefore the inhabitants of the earth have not fallen.

26:19. Thy dead men shall live, my slain shall rise again:  awake, and
give praise, ye that dwell in the dust:  for thy dew is the dew of the
light:  and the land of the giants thou shalt pull down into ruin.

26:20. Go, my people, enter into thy chambers, shut thy doors upon
thee, hide thyself a little for a moment, until the indignation pass
away.

26:21. For behold the Lord will come out of his place, to visit the
iniquity of the inhabitant of the earth against him:  and the earth
shall disclose her blood, and shall cover her slain no more.

Shall cover her slain no more. . .This is said with relation to the
martyrs, and their happy resurrection.



Isaias Chapter 27


The punishment of the oppressors of God's people.  The Lord's favour to
his church.

27:1. In that day the Lord with his hard, and great, and strong sword
shall visit leviathan the bar serpent, and leviathan the crooked
serpent, and shall slay the whale that is in the sea.

Leviathan. . .That is, the devil, the great enemy of the people of God.
He is called the bar serpent from his strength, and the crooked serpent
from his wiles; and the whale of the sea, from the tyranny he exercises
in the sea of this world.  He was spiritually slain by the death of
Christ, when his power was destroyed.

27:2. In that day there shall be singing to the vineyard of pure wine.

The vineyard, etc. . .The church of Christ.

27:3. I am the Lord that keep it, I will suddenly give it drink:  lest
any hurt come to it, I keep it night and day.

I will suddenly give it drink. . .Or, as the Hebrew may also be
rendered, I will continually water it.

27:4. There is no indignation in me:  who shall make me a thorn and a
brier in battle:  shall I march against it, shall, I set it on fire
together?

No indignation in me, etc. . .Viz., against the church:  nor shall I
become as a thorn or brier in its regard; or march against it, or set
it on fire:  but it shall always take fast hold of me, and keep an
everlasting peace with me.

27:5. Or rather shall it take hold of my strength, shall it make peace
with me, shall it make peace with me?

27:6. When they shall rush in unto Jacob, Israel shall blossom and bud,
and they shall fill the face of the world with seed.

When they shall rush in, etc. . .Some understand this of the enemies of
the true Israel, that shall invade it in vain.  Others of the spiritual
invasion made by the apostles of Christ.

27:7. Hath he struck him according to the stroke of him that struck
him?  or is he slain, as he killed them that were slain by him?

Hath he struck him, etc. . .Hath God punished the carnal persecuting
Jews, in proportion to their doings against Christ and his saints?

27:8. In measure against measure, when it shall be cast off, thou shalt
judge it.  He hath meditated with his severe spirit in the day of heat.

When it shall be cast off, etc. . .When the synagogue shall be cast off,
thou shalt judge it in measure, and in proportion to its crimes.--Ibid.
He hath meditated, etc. . .God hath designed severe punishments in the
day of his wrath.

27:9. Therefore upon this shall the iniquity of the house of Jacob be
forgiven:  and this is all the fruit, that the sin thereof should be
taken away, when he shall have made all the stones of the altar, as
burnt stones broken in pieces, the groves and temples shall not stand.

Of the house of Jacob. . .Viz., of such of them as shall be converted.

27:10. For the strong city shall be desolate, the beautiful city shall
be forsaken, and shall be left as a wilderness:  there the calf shall
feed, and there shall he lie down, and shall consume its branches.

The strong city. . .Jerusalem.

27:11. Its harvest shall be destroyed with drought, women shall come
and teach it:  for it is not a wise people, therefore he that made it,
shall not have mercy on it:  and he that formed it, shall not spare it.

27:12. And it shall come to pass, that in that day the Lord will strike
from the channel of the river even to the torrent of Egypt, and you
shall be gathered together one by one, O ye children of Israel.

27:13. And it shall come to pass, that in that day a noise shall be
made with a great trumpet, and they that were lost, shall come from the
land of the Assyrians, and they that were outcasts in the land of
Egypt, and they shall adore the Lord in the holy mount in Jerusalem.

A great trumpet. . .The preaching of the gospel for the conversion of
the Jews.



Isaias Chapter 28


The punishment of the Israelites, for their pride, intemperance, and
contempt of religion.  Christ the cornerstone.

28:1. Woe to the crown of pride, to the drunkards of Ephraim, and to
the fading flower the glory his joy, who were on the head of the fat
valley, staggering with wine.

Ephraim. . .That is, the kingdom of the ten tribes.--Ibid.  The head of
the fat valley. . .Samaria, situate on a hill, having under it a most
fertile valley.

28:2. Behold the Lord is mighty and strong, as a storm of hail:  a
destroying whirlwind, as the violence of many waters overflowing, and
sent forth upon a spacious land.

28:3. The crown of pride of the drunkards of Ephraim shall be trodden
under feet.

28:4. And the fading tower the glory of his joy, who is on the head of
the fat valley, shall be as a hasty fruit before the ripeness of
autumn:  which when he that seeth it shall behold, as soon he taketh it
in his hand, he will eat it up.

28:5. In that day the Lord of hosts shall be a crown of glory, and a
garland of joy to the residue of his people:

28:6. And a spirit of judgment to him that sitteth in judgment, and
strength to them that return out of the battle to the gate.

28:7. But these also have been ignorant through wine, and through
drunkenness have erred:  the priest and the prophet have been ignorant
through drunkenness, they are swallowed up with wine, they have gone
astray in drunkenness, they have not known him that seeth, they have
been ignorant of judgment.

These also. . .The kingdom of Juda.

28:8. For all the tables were full of vomit and filth, so that there
was no more place.

28:9. Whom shall he teach knowledge?  and whom shall he make to
understand the hearing?  them that are weaned from the milk, that are
drawn away from the breasts.

28:10. For command, command again; command, command again; expect,
expect again; a little there, a little there.

Command, command again, etc. . .This is said in the person of the Jews,
resisting the repeated commands of God, and still putting him off.

28:11. For with the speech of lips, and with another tongue he will
speak to this people.

28:12. To whom he said:  This is my rest, refresh the weary, and this is
my refreshing:  and they would not hear.

28:13. And the word of the Lord shall be to them:  Command, command
again; command, command again; expect, expect again; a little there, a
little there:  that they may go, and fall backward, and be broken, and
snared, and taken.

28:14. Wherefore hear the word of the Lord, ye scornful men, who rule
over my people that is in Jerusalem.

28:15. For you have said:  We have entered into a league with death, and
we have made a covenant with hell.  When the overflowing scourge shall
pass through, it shall not come upon us:  for we have placed our hope in
lies, and by falsehood we are protected.

28:16. Therefore thus saith the Lord God:  Behold I will lay a stone in
the foundations of Sion, a tried stone, a corner stone, a precious
stone, founded in the foundation.  He that believeth, let him not
hasten.

A stone in the foundations. . .Viz., Christ.--Ibid.  Let him not hasten,
etc. . .Let him expect his coming with patience.

28:17. And I will set judgment in weight, and justice in measure:  and
hail shall overturn the hope of falsehood:  and waters shall overflow
its protection.

28:18. And your league with death shall be abolished, and your covenant
with hell shall not stand:  when the overflowing scourge shall pass, you
shall be trodden down by it.

28:19. Whensoever it shall pass through, it shall take you away:
because in the morning early it shall pass through, in the day and in
the night, and vexation alone shall make you understand what you hear.

28:20. For the bed is straitened, so that one must fall out, and a
short covering cannot cover both.

The bed is straitened, etc. . .It is too narrow to hold two:  God will
have the bed of our heart all to himself.

28:21. For the Lord shall stand up as in the mountain of divisions:  he
shall be angry as in the valley which is in Gabaon:  that he may do his
work, his strange work:  that he may perform his work, his work is
strange to him.

As in the mountain, etc. . .As the Lord fought against the Philistines
in Baal Pharasim, 2 Kings 5., and against the Chanaanites, in the
valley of Gabaon, Jos. 10.

28:22. And now do not mock, lest your bonds be tied strait.  For I have
heard of the Lord the God of hosts a consumption and a cutting short
upon all the earth.

28:23. Give ear, and hear my voice, hearken, and hear my speech.

28:24. Shall the ploughman plough all the day to sow, shall he open and
harrow his ground?

28:25. Will he not, when he hath made plain the surface thereof, sow
gith, and scatter cummin, and put wheat in order, and barley, and
millet, and vetches in their bounds?

28:26. For he will instruct him in judgment:  his God will teach him.

28:27. For gith shall not be thrashed with saws, neither shall the cart
wheel turn about upon cummin:  but gith shall be beaten out with a rod,
and cumin with a staff.

28:28. But breadcorn shall be broken small:  but the thrasher shall not
thrash it for ever, neither shall the cart wheel hurt it, nor break it
with its teeth.

28:29. This also is come forth from the Lord God of hosts, to make his
counsel wonderful, and magnify justice.

This also, etc. . .Such also is the proceeding of the Lord with his
land, and the divers seeds he throws therein.



Isaias Chapter 29


God's heavy judgments upon Jerusalem, for their obstinacy:  with a
prophecy of the conversion of the Gentiles.

29:1. Woe to Ariel, to Ariel the city which David took:  year is added
to year.  the solemnities are at an end.

Ariel. . .This word signifies, the lion of God, and here is taken for
the strong city of Jerusalem.

29:2. And I will make a trench about Ariel, and it shall be in sorrow
and mourning, and it shall be to me as Ariel.

29:3. And I will make a circle round about thee, and I will cast up a
rampart against thee, and raise up bulwarks to besiege thee.

29:4. Thou shalt be brought down, thou shall speak out of the earth,
and thy speech shall be heard out of the ground:  and thy voice shall be
from the earth like that of the python, and out of the earth thy speech
shall mutter.

29:5. And the multitude of them that fan thee, shall be like small
dust:  and as ashes passing away, the multitude of them that have
prevailed against thee.

29:6. And it shall be at an instant suddenly.  A visitation shall come
from the Lord of hosts in thunder, and with earthquake, and with a
great noise of whirlwind and tempest; and with the flame of devouring
fire.

29:7. And the multitude of all nations that have fought against Ariel,
shall be as the dream of a vision by night, and all that have fought,
and besieged and prevailed against it.

29:8. And as he that is hungry dreameth, and eateth, but when he is
awake, his soul is empty:  and as he that is thirsty dreameth, and
drinketh and after he is awake, is yet faint with thirst, and his soul
is empty:  so shall be the multitude of all the Gentiles, that have
fought against mount Sion.

29:9. Be astonished, and wonder, waver, and stagger:  be drunk, and not
with wine:  stagger, and not with drunkenness.

29:10. For the Lord hath mingled for you the spirit of a deep sleep, he
will shut up your eyes, he will cover your prophets and princes, that
see visions.

29:11. And the vision of all shall be unto you as the words of a book
that is sealed which when they shall deliver to one that is learned,
they shall say:  Read this:  and he shall answer:  I cannot, for it is
sealed.

29:12. And the book shall be given to one that knoweth no letters, and
it shall be said to him:  Read:  and he shall answer:  I know no letters.

29:13. And the Lord said:  Forasmuch as this people draw near me with
their mouth, and with their lips glorify me, but their heart is far
from me, and they have feared me with the commandment and doctrines of
men:

29:14. Therefore behold I will proceed to cause an admiration in this
people, by a great and wonderful miracle:  for wisdom shall perish from
their wise men, and the understanding of their prudent men shall be
hid.

29:15. Woe to you that are deep of heart, to hide your counsel from the
Lord:  and their works are in the dark, and they say:  Who seeth us, and
who knoweth us?

29:16. This thought of yours is perverse:  as if the clay should think
against the potter, and the work should say to the maker thereof:  Thou
madest me not:  or the thing framed should say to him that fashioned it:
Thou understandest not.

29:17. Is it not yet a very little while, and Libanus shall be turned
into charmel, and charmel shall be esteemed as a forest?

Charmel. . .This word signifies a fruitful field.

29:18. And in that day the deaf shall hear the words of the book, and
out of darkness and obscurity the eyes of the blind shall see.

29:19. And the meek shall increase their joy in the Lord, and the poor
men shall rejoice in the Holy One of Israel.

29:20. For he that did prevail hath failed, the scorner is consumed,
and they are all cut off that watched for iniquity:

29:21. That made men sin by word, and supplanted him that reproved them
in the gate, and declined in vain from the just.

29:22. Therefore thus saith the Lord to the house of Jacob, he that
redeemed Abraham:  Jacob shall not now be confounded, neither shall his
countenance now be ashamed:

29:23. But when he shall see his children, the work of my hands in the
midst of him sanctifying my name, and they shall sanctify the Holy One
of Jacob, and shall glorify the God of Israel:

29:24. And they that erred in spirit, shall know understanding, and
they that murmured, shall learn the law.



Isaias Chapter 30


The people are blamed for their confidence in Egypt.  God's mercies
towards his church.  The punishment of sinners.

30:1. Woe to you, apostate children, saith the Lord, that you would
take counsel, and not of me:  and would begin a web, and not by my
spirit, that you might add sin upon sin:

30:2. Who walk to go down into Egypt, and have not asked at my mouth,
hoping for help in the strength of Pharao, and trusting in the shadow
of Egypt.

30:3. And the strength of Pharao shall be to your confusion, and the
confidence of the shadow of Egypt to your shame.

30:4. For thy princes were in Tanis, and thy messengers came even to
Hanes.

30:5. They were all confounded at a people that could not profit them:
they were no help, nor to any profit, but to confusion and to reproach.

30:6. The burden of the beasts of the south.  In a land of trouble and
distress, from whence come the lioness, and the lion, the viper and the
flying basilisk, they carry their riches upon the shoulders of beasts,
and their treasures upon the bunches of camels to a people that shall
not be able to profit them.

30:7. For Egypt shall help in vain, and to no purpose:  therefore have I
cried concerning this:  It is pride only, sit still.

30:8. Now therefore go in and write for them upon box, and note it
diligently in a book, and it shall be in the latter days for a
testimony for ever.

30:9. For it is a people that provoketh to wrath, and lying children
that will not hear the law of God.

30:10. Who say to the seers:  See not:  and to them that behold:  Behold
not for us those things that are right:  speak unto us pleasant things,
see errors for us.

30:11. Take away from me the way, turn away the path from me, let the
Holy One of Israel cease from before us.

30:12. Therefore thus saith the Holy One of Israel:  Because you have
rejected this word, and have trusted in oppression and tumult, and have
leaned upon it:

30:13. Therefore shall this iniquity be to you as a breach that
falleth, and is found wanting in a high wall, for the destruction
thereof shall come on a sudden, when it is not looked for.

30:14. And it shall be broken small, as the potter's vessel is broken
all to pieces with mighty breaking, and there shall not a sherd be
found of the pieces thereof, wherein a little fire may be carried from
the hearth, or a little water be drawn out of the pit.

30:15. For thus saith the Lord God the Holy One of Israel:  If you
return and be quiet, you shall be saved:  in silence and in hope shall
your strength be.  And you would not:

30:16. But have said:  No, but we will flee to horses:  therefore shall
you flee.  And we will mount upon swift ones:  therefore shall they be
swifter that shall pursue after you.

30:17. A thousand men shall flee for fear of one:  and for fear of five
shall you flee, till you be left as the mast of ship on the top of a
mountain, and as an ensign upon a hill.

30:18. Therefore the Lord waiteth that he may have mercy on you:  and
therefore shall he be exalted sparing you:  because the Lord is the God
of judgment:  blessed are all they that wait for him.

30:19. For the people of Sion shall dwell in Jerusalem:  weeping thou
shalt not weep, he will surely have pity on thee:  at the voice of thy
cry, as soon as he shall hear, he will answer thee.

30:20. And the Lord will give you spare bread, and short water:  and
will not cause thy teacher to flee away from thee any more, and thy
eyes shall see thy teacher.

30:21. And thy ears shall hear the word of one admonishing thee behind
thy back:  This is the way, walk ye in it:  and go not aside neither to
the right hand, nor to the left.

30:22. And thou shalt defile the plates of thy graven things of silver,
and the garment of thy molten things of gold, and shalt cast them away
as the uncleanness of a menstruous woman.  Thou shalt say to it:  Get
thee hence.

30:23. And rain shall be given to thy seed, wheresoever thou shalt sow
in the land:  and the bread of the corn of the land shall be most
plentiful, and fat.  The lamb in that day shall feed at large in thy
possession:

30:24. And thy oxen, and the ass colts that till the ground, shall eat
mingled provender as it was winnowed in the floor.

30:25. And there shall be upon every high mountain, and upon every
elevated hill rivers of running waters in the day of the slaughter of
many, when the tower shall fall.

30:26. And the light of the moon shall be as the light of the sun, and
the light of the sun shall be sevenfold, as the light of seven days:  in
the day when the Lord shall bind up the wound of his people, and shall
heal the stroke of their wound.

30:27. Behold the name of the Lord cometh from afar, his wrath burneth,
and is heavy to bear:  his lips are filled with indignation, and his
tongue as a devouring fire.

30:28. His breath as a torrent overflowing even to the midst of the
neck, to destroy the nations unto nothing, and the bridle of error that
was in the jaws of the people.

30:29. You shall have a song as in the night of the sanctified
solemnity, and joy of heart, as where one goeth with a pipe, to come
into the mountain of the Lord, to the Mighty One of Israel.

30:30. And the Lord shall make the glory of his voice to be heard, and
shall shew the terror of his arm, in the threatening of wrath, and the
flame of devouring fire:  he shall crush to pieces with whirlwind, and
hailstones.

30:31. For at the voice of the Lord the Assyrian shall fear being
struck with the rod.

30:32. And the passage of the rod shall be strongly grounded, which the
Lord shall make to rest upon him with timbrels and harps, and in great
battles he shall overthrow them.

30:33. For Topheth is prepared from yesterday, prepared by the king,
deep, and wide.  The nourishment thereof is fire and much wood:  the
breath of the Lord as a torrent of brimstone kindling it.

Topheth. . .It is the same as Gehenna, and is taken for hell.



Isaias Chapter 31


The folly of trusting to Egypt, and forgetting God.  He will fight for
his people against the Assyrians.

31:1. Woe to them that go down to Egypt for help, trusting in horses,
and putting their confidence in chariots, because they are many:  and in
horsemen, because they are very strong:  and have not trusted in the
Holy One of Israel, and have not sought after the Lord.

31:2. But he that is the wise one hath brought evil, and hath not
removed his words:  and he will rise up against the house of the wicked,
and against the aid of them that work iniquity.

31:3. Egypt is man, and not God:  and their horses, flesh, and not
spirit:  and the Lord shall put down his hand, and the helper shall
fall, and he that is helped shall fall, and they shall all be
confounded together.

31:4. For thus saith the Lord to me:  Like as the lion roareth, and the
lions whelp upon his prey, and when a multitude of shepherds shall come
against him, he will not fear at their voice, nor be afraid of their
multitude:  so shall the Lord of hosts come down to fight upon mount
Sion, and upon the hill thereof.

31:5. As birds flying, so will the Lord of hosts protect Jerusalem,
protecting and delivering, passing over and saving.

31:6. Return as you had deeply revolted, O children of Israel.

31:7. For in that day a man shall cast away his idols of silver, and
his idols of gold, which your hands have made for you to sin.

31:8. And the Assyrian shall fall by the sword not of a man, and the
sword not of a man shall devour him, and he shall flee not at the face
of the sword, and his young men shall be tributaries.

31:9. And his strength shall pass away with dread, and his princes
fleeing shall be afraid:  the Lord hath said it, whose fire is in Sion,
and his furnace in Jerusalem.



Isaias Chapter 32


The blessings of the reign of Christ.  The desolation of the Jews, and
prosperity of the church of Christ.

32:1. Behold a king shall reign in justice, and princes shall rule in
judgment.

32:2. And a man shall be as when one is hid from the wind, and hideth
himself from a storm, as rivers of waters in drought, and the shadow of
a rock that standeth out in a desert land.

32:3. The eyes of them that see shall not be dim, and the ears of them
that hear shall hearken diligently.

32:4. And the heart of fools shall understand knowledge, and the tongue
of stammerers shall speak readily and plain.

32:5. The fool shall no more be called prince:  neither shall the
deceitful be called great:

32:6. For the fool will speak foolish things, and his heart will work
iniquity, to practise hypocrisy, and speak to the Lord deceitfully, and
to make empty the soul of the hungry, and take away drink from the
thirsty.

32:7. The vessels of the deceitful are most wicked:  for he hath framed
devices to destroy the meek, with lying words, when the poor man
speaketh judgment.

32:8. But the prince will devise such things as are worthy of a prince,
and he shall stand above the rulers.

32:9. Rise up, ye rich women, and hear my voice:  ye confident
daughters, give ear to my speech.

32:10. For after days and a year, you that are confident shall be
troubled:  for the vintage is at an end, the gathering shall come no
more.

32:11. Be astonished, ye rich women, be troubled, ye confident ones:
strip you, and be confounded, gird your loins.

32:12. Mourn for your breasts, for the delightful country, for the
fruitful vineyard.

32:13. Upon the land of my people shall thorns and briers come up:  how
much more upon all the houses of joy, of the city that rejoiced?

32:14. For the house is forsaken, the multitude of the city is left,
darkness and obscurity are come upon its dens for ever.  A joy of wild
asses, the pastures of flocks.

32:15. Until the spirit be poured upon us from on high:  and the desert
shall be as a charmel, and charmel shall be counted for a forest.

32:16. An judgment shall dwell in the wilderness, and justice shall sit
in charmel.

32:17. And the work of justice shall be peace, and the service of
justice quietness, and security for ever.

32:18. And my people shall sit in the beauty of peace, and in the
tabernacles of confidence, and in wealthy rest.

32:19. But hail shall be in the descent of the forest, and the city
shall be made very low.

32:20. Blessed are ye that sow upon all waters, sending thither the
foot of the ox and the ass.



Isaias Chapter 33


God's revenge against the enemies of his church.  The happiness of the
heavenly Jerusalem.

33:1. Woe to thee that spoilest, shalt not thou thyself also be
spoiled?  and thou that despisest, shalt not thyself also be despised?
when thou shalt have made an end of spoiling, thou shalt be spoiled:
when being wearied thou shalt cease to despise, thou shalt be despised.

That spoilest, etc. . .This is particularly directed to Sennacherib.

33:2. O Lord, have mercy on us:  for we have waited for thee:  be thou
our arm in the morning, and our salvation in the time of trouble.

33:3. At the voice of the angel the people fled, and at the lifting up
thyself the nations are scattered.

33:4. And your spoils shall be gathered together as the locusts are
gathered, as when the ditches are full of them.

33:5. The Lord is magnified, for he hath dwelt on high:  he hath filled
Sion with judgment and justice.

33:6. And there shall be faith in thy times:  riches of salvation,
wisdom and knowledge:  the fear of the Lord is his treasure.

33:7. Behold they that see shall cry without, the angels of peace shall
weep bitterly.

The angels of peace. . .The messengers or deputies sent to negotiate a
peace.

33:8. The ways are made desolate, no one passeth by the road, the
covenant is made void, he hath rejected the cities, he hath not
regarded the men.

33:9. The land hath mourned, and languished:  Libanus is confounded, and
become foul, and Saron is become as a desert:  and Basan and Carmel are
shaken.

33:10. Now will I rise up, saith the Lord:  now will I be exalted, now
will I lift up myself.

33:11. You shall conceive heat, you shall bring forth stubble:  your
breath as fire shall devour you.

33:12. And the people shall be as ashes after a fire, as a bundle of
thorns they shall be burnt with fire.

33:13. Hear, you that are far off, what I have done, and you that are
near know my strength.

33:14. The sinners in Sion are afraid, trembling hath seized upon the
hypocrites.  Which of you can dwell with devouring fire?  which of you
shall dwell with everlasting burnings?

33:15. He that walketh in justices, and speaketh truth, that casteth
away avarice by oppression, and shaketh his hands from all bribes, that
stoppeth his ears lest he hear blood, and shutteth his eyes that he may
see no evil.

33:16. He shall dwell on high, the fortifications of rocks shall be his
highness:  bread is given him, his waters are sure.

33:17. His eyes shall see the king in his beauty, they shall see the
land far off.

33:18. Thy heart shall meditate fear:  where is the learned?  where is he
that pondered the words of the law?  where is the teacher of little
ones?

33:19. The shameless people thou shalt not see, the people of profound
speech:  so that thou canst not understand the eloquence of his tongue,
in whom there is no wisdom.

33:20. Look upon Sion the city of our solemnity:  thy eyes shall see
Jerusalem, a rich habitation, a tabernacle that cannot be removed:
neither shall the nails thereof be taken away for ever, neither shall
any of the cords thereof be broken.

33:21. Because only there our Lord is magnificent:  a place of rivers,
very broad and spacious streams:  no ship with oars shall pass by it,
neither shall the great galley pass through it.

Of rivers. . .He speaks of the rivers of endless joys that flow from the
throne of God to water the heavenly Jerusalem, where no enemy's ship
can come, etc.

33:22. For the Lord is our judge, the Lord is our lawgiver, the Lord is
our king:  he will save us.

33:23. Thy tacklings are loosed, and they shall be of no strength:  thy
mast shall be in such condition, that thou shalt not be able to spread
the flag.  Then shall the spoils of much prey be divided:  the lame shall
take the spoil.

Thy tacklings. . .He speaks of the enemies of the church, under the
allegory of a ship that is disabled.

33:24. Neither shall he that is near, say:  I am feeble.  The people that
dwell therein, shall have their iniquity taken away from them.



Isaias Chapter 34


The general judgment of the wicked.

34:1. Come near, ye Gentiles, and hear, and hearken, ye people:  let the
earth hear, and all that is therein, the world, and every thing that
cometh forth of it.

34:2. For the indignation of the Lord is upon all nations, and his fury
upon all their armies:  he hath killed them, and delivered them to
slaughter.

34:3. Their slain shall be cast forth, and out of their carcasses shall
rise a stink:  the mountains shall be melted with their blood.

34:4. And all the host of the heavens shall pine away, and the heavens
shall be folded together as a book:  and all their host shall fall down
as the leaf falleth from the vine, and from the fig tree.

And all the host of the heavens. . .That is, the sun, moon, and stars.

34:5. For my sword is inebriated in heaven:  behold it shall come down
upon Idumea, and upon the people of my slaughter unto judgment.

Idumea. . .Under the name of Idumea, or Edom a people that were enemies
of the Jews, are here understood the wicked in general, the enemies of
God and his church.

34:6. The sword of the Lord is filled with blood, it is made thick with
the blood of lambs and buck goats, with the blood of rams full of
marrow:  for there is a victim of the Lord in Bosra and a great
slaughter in the land of Edom.

34:7. And the unicorns shall go down with them, and the bulls with the
mighty:  their land shall be soaked with blood, and their ground with
the fat of fat ones.

The unicorns. . .That is, the great and mighty.

34:8. For it is the day of the vengeance of the Lord, the year of
recompenses of the judgment of Sion.

The year of recompenses, etc. . .When the persecutors of Sion, that is,
of the church, shall receive their reward.

34:9. And the streams thereof shall be turned into pitch, and the
ground thereof into brimstone:  and the land thereof shall become
burning pitch.

34:10. Night and day it shall not be quenched, the smoke thereof shall
go up for ever:  from generation to generation it shall lie waste, none
shall pass through it for ever and ever.

34:11. The bittern and ericius shall possess it:  and the ibis and the
raven shall dwell in it:  and a line shall be stretched out upon it, to
bring it to nothing, and a plummet, unto desolation.

34:12. The nobles thereof shall not be there:  they shall call rather
upon the king, and all the princes thereof shall be nothing.

34:13. And thorns and nettles shall grow up in its houses, and the
thistle in the fortresses thereof:  and it shall be the habitation of
dragons, and the pasture of ostriches.

34:14. And demons and monsters shall meet, and the hairy ones shall cry
out one to another, there hath the lamia lain down, and found rest for
herself.

34:15. There hath the ericius had its hole, and brought up its young
ones, and hath dug round about, and cherished them in the shadow
thereof:  thither are the kites gathered together one to another.

34:16. Search ye diligently in the book of the Lord, and read:  not one
of them was wanting, one hath not sought for the other:  for that which
proceedeth out of my mouth, he hath commanded, and his spirit it hath
gathered them.

34:17. And he hath cast the lot for them, and his hand hath divided it
to them by line:  they shall possess it for ever, from generation to
generation they shall dwell therein.



Isaias Chapter 35


The joyful flourishing of Christ's kingdom:  in his church shall be a
holy and secure way.

35:1. The land that was desolate and impassable shall be glad, and the
wilderness shall rejoice, and shall flourish like the lily.

35:2. It shall bud forth and blossom, and shall rejoice with joy and
praise:  the glory of Libanus is given to it:  the beauty of Carmel, and
Saron, they shall see the glory of the Lord, and the beauty of our God.

35:3. Strengthen ye the feeble hands, and confirm the weak knees.

35:4. Say to the fainthearted:  Take courage, and fear not:  behold your
God will bring the revenge of recompense:  God himself will come and
will save you.

35:5. Then shall the eyes of the blind be opened, and the ears of the
deaf shall be unstopped.

35:6. Then shall the lame man leap as a hart, and the tongue of the
dumb shall be free:  for waters are broken out in the desert, and
streams in the wilderness.

35:7. And that which was dry land, shall become a pool, and the thirsty
land springs of water.  In the dens where dragons dwelt before, shall
rise up the verdure of the reed and the bulrush.

35:8. And a path and a way shall be there, and it shall be called the
holy way:  the unclean shall not pass over it, and this shall be unto
you a straight way, so that fools shall not err therein.

35:9. No lion shall be there, nor shall any mischievous beast go up by
it, nor be found there:  but they shall walk there that shall be
delivered.

35:10. And the redeemed of the Lord shall return, and shall come into
Sion with praise, and everlasting joy shall be upon their heads:  they
shall obtain joy and gladness, and sorrow and mourning shall flee away.



Isaias Chapter 36


Sennacherib invades Juda:  his blasphemies.

36:1. And it came to pass in the fourteenth year of king Ezechias, that
Sennacherib king of the Assyrians came up against all the fenced cities
of Juda, and took them.

36:2. And the king of the Assyrians sent Rabsaces from Lachis to
Jerusalem, to king Ezechias with a great army, and he stood by the
conduit of the upper pool in the way of the fuller's field.

36:3. And there went out to him Eliacim the son of Helcias, who was
over the house, and Sobna the scribe, and Joahe the son of Asaph the
recorder.

36:4. And Rabsaces said to them:  Tell Ezechias:  Thus saith the great
king, the king of the Assyrians:  What is this confidence wherein thou
trustest?

36:5. Or with what counsel or strength dost thou prepare for war?  on
whom dost thou trust, that thou art revolted from me?

36:6. Lo thou trustest upon this broken staff of a reed, upon Egypt:
upon which if a man lean, it will go into his hand, and pierce it:  so
is Pharao king of Egypt to all that trust in him.

36:7. But if thou wilt answer me:  We trust in the Lord our God:  is it
not he whose high places and altars Ezechias hath taken away, and hath
said to Juda and Jerusalem:  You shall worship before this altar?

36:8. And now deliver thyself up to my lord the king of the Assyrians,
and I will give thee two thousand horses, and thou wilt not be able on
thy part to find riders for them.

36:9. And how wilt thou stand against the face of the judge of one
place, of the least of my master's servants?  But if thou trust in
Egypt, in chariots and in horsemen:

36:10. And am I now come up without the Lord against this land to
destroy it?  The Lord said to me:  Go up against this land, and destroy
it.

36:11. And Eliacim, and Sobna, and Joahe said to Rabsaces:  Speak to thy
servants in the Syrian tongue:  for we understand it:  speak not to us in
the Jews' language in the hearing of the people, that are upon the
wall.

36:12. And Rabsaces said to them:  Hath my master sent me to thy master
and to thee, to speak all these words; and not rather to the men that
sit on the wall; that they may eat their own dung, and drink their
urine with you?

36:13. Then Rabsaces stood, and cried out with a loud voice in the
Jews' language, and said:  Hear the words of the great king, the king of
the Assyrians.

36:14. Thus saith the king:  Let not Ezechias deceive you, for he shall
not be able to deliver you.

36:15. And let not Ezechias make you trust in the Lord, saying:  The
Lord will surely deliver us, and this city shall not be given into the
hands of the king of the Assyrians.

36:16. Do not hearken to Ezechias:  for thus said the king of the
Assyrians:  Do with me that which is for your advantage, and come out to
me, and eat ye every one of his vine, and every one of his fig tree,
and drink ye every one the water of his cistern,

36:17. Till I come and take you away to a land, like to your own, a
land of corn and of wine, a land of bread and vineyards.

36:18. Neither let Ezechias trouble you, saying:  The Lord will deliver
us.  Have any of the gods of the nations delivered their land out of the
hand of the king of the Assyrians?

36:19. Where is the god of Emath and of Arphad?  where is the god of
Sepharvaim?  have they delivered Samaria out of my hand?

36:20. Who is there among all the gods of these lands, that hath
delivered his country out of my hand, that the Lord may deliver
Jerusalem out of my hand?

36:21. And they held their peace, and answered him not a word.  For the
king had commanded, saying:  Answer him not.

36:22. And Eliacim the son of Helcias, that was over the house, and
Sobna the scribe, and Joahe the son of Asaph the recorder, went in to
Ezechias with their garments rent, and told him the words of Rabsaces.



Isaias Chapter 37


Ezechias, his mourning and prayer.  God's promise of protection.  The
Assyrian army is destroyed.  Sennacherib is slain.

37:1. And it came to pass, when king Ezechias had heard it, that he
rent his garments and covered himself with sackcloth, and went into the
house of the Lord.

37:2. And he sent Eliacim who was over the house, and Sobna the scribe,
and the ancients of the priests covered with sackcloth, to Isaias the
son of Amos the prophet.

37:3. And they said to him:  Thus saith Ezechias:  This day is a day of
tribulation, and of rebuke, and of blasphemy:  for the children are come
to the birth, and there is not strength to bring forth.

37:4. It may be the Lord thy God will hear the words of Rabsaces, whom
the king of the Assyrians his master hath sent to blaspheme the living
God, and to reproach with words which the Lord thy God hath heard:
wherefore lift up by prayer for the remnant that is left.

37:5. And the servants of Ezechias came to Isaias.

37:6. And Isaias said to them:  Thus shall you say to your master:  Thus
saith the Lord:  Be not afraid of the words that thou hast heard, with
which the servants of the king of the Assyrians have blasphemed me.

37:7. Behold, I will send a spirit upon him, and he shall hear a
message, and shall return to his own country, and I will cause him to
fall by the sword in his own country.

37:8. And Rabsaces returned, and found the king of the Assyrians
besieging Lobna.  For he had heard that he was departed from Lachis.

37:9. And he heard say about Tharaca the king of Ethiopia:  He is come
forth to fight against thee.  And when he heard it, he sent messengers
to Ezechias, saying:

37:10. Thus shall you speak to Ezechias the king of Juda, saying:  Let
not thy God deceive thee, in whom thou trustest, saying:  Jerusalem
shall not be given into the hands of the king of the Assyrians.

37:11. Behold thou hast heard all that the kings of the Assyrians have
done to all countries which they have destroyed, and canst thou be
delivered?

37:12. Have the gods of the nations delivered them whom my fathers have
destroyed, Gozam, and Haram, and Reseph, and the children of Eden, that
were in Thalassar?

37:13. Where is the king of Emath, and the king of Arphad, and the king
of the city of Sepharvaim, of Ana, and of Ava?

37:14. And Ezechias took the letter from the hand of the messengers,
and read it, and went up to the house of the Lord, and Ezechias spread
it before the Lord.

37:15. And Ezechias prayed to the Lord, saying:

37:16. Lord of hosts, God of Israel who sitteth upon the cherubims,
thou alone art the God of all the kingdoms of the earth, thou hast made
heaven and earth.

37:17. Incline, O Lord, thy ear, and hear:  open, O Lord, thy eyes, and
see, and hear all the words of Sennacherib, which he hath sent to
blaspheme the living God.

37:18. For of a truth, O Lord, the kings of the Assyrians have laid
waste lands, and their countries.

37:19. And they have cast their gods into the fire, for they were not
gods, but the works of men's hands, of wood and stone:  and they broke
them in pieces.

37:20. And now, O Lord our God, save us out of his hand:  and let all
the kingdoms of the earth know, that thou only art the Lord.

37:21. And Isaias the son of Amos sent to Ezechias, saying:  Thus saith
the Lord the God of Israel:  For the prayer thou hast made to me
concerning Sennacherib the king of the Assyrians:

37:22. This is the word which the Lord hath spoken of him:  The virgin
the daughter of Sion hath despised thee, and laughed thee to scorn:  the
daughter of Jerusalem hath wagged the head after thee.

37:23. Whom hast thou reproached, and whom hast thou blasphemed, and
against whom hast thou exalted thy voice, and lifted up thy eyes on
high?  Against the Holy One of Israel.

37:24. By the hand of thy servants thou hast reproached the Lord:  and
hast said:  With the multitude of my chariots I have gone up to the
height of the mountains, to the top of Libanus:  and I will cut down its
tall cedars, and its choice fir trees, and will enter to the top of its
height, to the forest of its Carmel.

Carmel. . .See these figurative expressions explained in the annotations
on the nineteenth chapter of the fourth book of Kings.

37:25. I have digged, and drunk water, and have dried up with the sole
of my foot, all the rivers shut up in banks.

37:26. Hast thou not heard what I have done to him of old?  from the
days of old I have formed it:  and now I have brought it to effect:  and
it hath come to pass that hills fighting together, and fenced cities
should be destroyed.

37:27. The inhabitants of them were weak of hand, they trembled, and
were confounded:  they became like the grass of the field, and the herb
of the pasture, and like the grass of the housetops, which withered
before it was ripe.

37:28. I know thy dwelling, and thy going out, and thy coming in, and
thy rage against me.

37:29. When thou wast mad against me, thy pride came up to my ears:
therefore I will put a ring in thy nose, and a bit between thy lips,
and I will turn thee back by the way by which thou camest.

37:30. But to thee this shall be a sign:  Eat this year the things that
spring of themselves, and in the second year eat fruits:  but in the
third year sow and reap, and plant vineyards, and eat the fruit of
them.

37:31. And that which shall be saved of the house of Juda, and which is
left, shall take root downward, and shall bear fruit upward:

37:32. For out of Jerusalem shall go forth a remnant, and salvation
from mount Sion:  the zeal of the Lord of hosts shall do this.

37:33. Wherefore thus saith the Lord concerning the king of the
Assyrians:  He shall not come into this city, nor shoot an arrow into
it, nor come before it with shield, nor cast a trench about it.

37:34. By the way that he came, he shall return, and into this city he
shall not come, saith the Lord.

37:35. And I will protect this city, and will save it for my own sake,
and for the sake of David my servant.

37:36. And the angel of the Lord went out and slew in the camp of the
Assyrians a hundred and eighty-five thousand.  And they arose in the
morning, and behold they were all dead corpses.

37:37. And Sennacherib the king of the Assyrians went out and departed,
and returned, and dwelt in Ninive.

37:38. And it came to pass, as he was worshipping in the temple of
Nesroch his god, that Adramelech and Sarasar his sons slew him with the
sword:  and they fled into the land of Ararat, and Asarhaddon his son
reigned in his stead.



Isaias Chapter 38


Ezechias being advertised that he shall die, obtains by prayer a
prolongation of his life:  in confirmation of which the sun goes back.
The canticle of Ezechias.

38:1. In those days Ezechias was sick even to death, and Isaias the son
of Amos the prophet cane unto him, and said to him:  Thus saith the
Lord:  Take order with thy house, for thou shalt die, and not live.

38:2. And Ezechias turned his face toward the wall, and prayed to the
Lord,

38:3. And said:  I beseech thee, O Lord, remember how I have walked
before thee in truth, and with a perfect heart, and have done that
which is good in thy sight.  And Ezechias wept with great weeping.

38:4. And the word of the Lord came to Isaias, saying:

38:5. Go and say to Ezechias:  Thus saith the Lord the God of David thy
father:  I have heard thy prayer, and I have seen thy tears:  behold I
will add to thy days fifteen years:

38:6. And I will deliver thee and this city out of the hand of the king
of the Assyrians, and I will protect it.

38:7. And this shall be a sign to thee from the Lord, that the Lord
will do this word which he hath spoken:

38:8. Behold I will bring again the shadow of the lines, by which it is
now gone down in the sun dial of Achaz with the sun, ten lines
backward.  And the sun returned ten lines by the degrees by which it was
gone down.

38:9. The writing of Ezechias king of Juda, when he had been sick, and
was recovered of his sickness.

38:10. I said:  In the midst of my days I shall go to the gates of hell:
I sought for the residue of my years.

Hell. . .Sheol, or Hades, the region of the dead.

38:11. I said:  I shall not see the Lord God in the land of the living.
I shall behold man no more, nor the inhabitant of rest.

38:12. My generation is at an end, and it is rolled away from me, as a
shepherd's tent.  My life is cut off, as by a weaver:  whilst I was yet
but beginning, he cut me off:  from morning even to night thou wilt make
an end of me.

38:13. I hoped till morning, as a lion so hath he broken all my bones:
from morning even to night thou wilt make an end of me.

38:14. I will cry like a young swallow, I will meditate like a dove:  my
eyes are weakened looking upward:  Lord, I suffer violence, answer thou
for me.

38:15. What shall I say, or what shall he answer for me, whereas he
himself hath done it?  I will recount to thee all my years in the
bitterness of my soul.

38:16. O Lord, if man's life be such, and the life of my spirit be in
such things as these, thou shalt correct me, and make me to live.

38:17. Behold in peace is my bitterness most bitter:  but thou hast
delivered my soul that it should not perish, thou hast cast all my sins
behind thy back.

38:18. For hell shall not confess to thee, neither shall death praise
thee:  nor shall they that go down into the pit, look for thy truth.

38:19. The living, the living, he shall give praise to thee, as I do
this day:  the father shall make the truth known to the children.

38:20. O Lord, save me, and we will sing our psalms all the days of our
life in the house of the Lord.

38:21. Now Isaias had ordered that they should take a lump of figs, and
lay it as a plaster upon the wound, and that he should be healed.

38:22. And Ezechias had said:  What shall be the sign that I shall go up
to the house of the Lord?



Isaias Chapter 39


Ezechias shews all his treasures to the ambassadors of Babylon:  upon
which Isaias foretells the Babylonish captivity.

39:1. At that time Merodach Baladan, the son of Baladan king of
Babylon, sent letters and presents to Ezechias:  for he had heard that
he had been sick and was recovered.

39:2. And Ezechias rejoiced at their coming, and he shewed them the
storehouses of his aromatical spices, and of the silver, and of the
gold, and of the sweet odours, and of the precious ointment, and all
the storehouses of his furniture, and all things that were found in his
treasures.  There was nothing in his house, nor in all his dominion that
Ezechias shewed them not.

39:3. Then Isaias the prophet came to king Ezechias, and said to him:
What said these men, and from whence came they to thee?  And Ezechias
said:  From a far country they came to me, from Babylon.

39:4. And he said:  What saw they in thy house?  And Ezechias said:  All
things that are in my house have they seen, there was not any thing
which I have not shewn them in my treasures.

39:5. And Isaias said to Ezechias:  Hear the word of the Lord of hosts.

39:6. Behold the days shall come that all that is in thy house, and
that thy fathers have laid up in store until this day, shall be carried
away into Babylon:  there shall not any thing be left, saith the Lord.

39:7. And of thy children, that shall issue from thee, whom thou shalt
beget, they shall take away, and they shall be eunuchs in the palace of
the king of Babylon.

39:8. And Ezechias said to Isaias:  The word of the Lord, which he hath
spoken, is good.  And he said:  Only let peace and truth be in my days.



Isaias Chapter 40


The prophet comforts the people with the promise of the coming of
Christ to forgive their sins.  God's almighty power and majesty.

40:1. Be comforted, be comforted, my people, saith your God.

40:2. Speak ye to the heart of Jerusalem, and call to her:  for her evil
is come to an end, her iniquity is forgiven:  she hath received of the
hand of the Lord double for all her sins.

40:3. The voice of one crying in the desert:  Prepare ye the way of the
Lord, make straight in the wilderness the paths of our God.

40:4. Every valley shall be exalted, and every mountain and hill shall
be made low, and the crooked shall become straight, and the rough ways
plain.

40:5. And the glory of the Lord shall be revealed, and all flesh
together shall see, that the mouth of the Lord hath spoken.

40:6. The voice of one, saying:  Cry.  And I said:  What shall I cry?
All flesh is grass, and all the glory thereof as the flower of the field.

40:7. The grass is withered, and the flower is fallen, because the
spirit of the Lord hath blown upon it.  Indeed the people is grass:

40:8. The grass is withered, and the flower is fallen:  but the word of
our Lord endureth for ever.

40:9. Get thee up upon a high mountain, thou that bringest good tidings
to Sion:  lift up thy voice with strength, thou that bringest good
tidings to Jerusalem:  lift it up, fear not.  Say to the cities of Juda:
Behold your God:

40:10. Behold the Lord God shall come with strength, and his arm shall
rule:  Behold his reward is with him and his work is before him.

40:11. He shall feed his flock like a shepherd:  he shall gather
together the lambs with his arm, and shall take them up in his bosom,
and he himself shall carry them that are with young.

40:12. Who hath measured the waters in the hollow of his hand, and
weighed the heavens with his palm?  who hath poised with three fingers
the bulk of the earth, and weighed the mountains in scales, and the
hills in a balance?

40:13. Who hath forwarded the spirit of the Lord?  or who hath been his
counsellor, and hath taught him?

40:14. With whom hath he consulted, and who hath instructed him, and
taught him the path of justice, and taught him knowledge, and shewed
him the way of understanding?

40:15. Behold the Gentiles are as a drop of a bucket, and are counted
as the smallest grain of a balance:  behold the islands are as a little
dust.

40:16. And Libanus shall not be enough to burn, nor the beasts thereof
sufficient for a burnt offering.

40:17. All nations are before him as if they had no being at all, and
are counted to him as nothing, and vanity.

40:18. To whom then have you likened God?  or what image will you make
for him?

40:19. Hath the workman cast a graven statue?  or hath the goldsmith
formed it with gold, or the silversmith with plates of silver?

40:20. He hath chosen strong wood, and that will not rot:  the skilful
workman seeketh how he may set up an idol that may not be moved.

40:21. Do you not know?  hath it not been heard?  hath it not been told
you from the beginning?  have you not understood the foundations of the
earth?

40:22. It is he that sitteth upon the globe of the earth, and the
inhabitants thereof are as locusts:  he that stretcheth out the heavens
as nothing, and spreadeth them out as a tent to dwell in.

40:23. He that bringeth the searchers of secrets to nothing, that hath
made the judges of the earth as vanity.

40:24. And surely their stock was neither planted, nor sown, nor rooted
in the earth:  suddenly he hath blown upon them, and they are withered,
and a whirlwind shall take them away as stubble.

40:25. And to whom have ye likened me, or made me equal, saith the Holy
One?

40:26. Lift up your eyes on high, and see who hath created these
things:  who bringeth out their host by number, and calleth them all by
their names:  by the greatness of his might, and strength, and power,
not one of them was missing.

40:27. Why sayest thou, O Jacob, and speakest, O Israel:  My way is hid
from the Lord, and my judgment is passed over from my God?

40:28. Knowest thou not, or hast thou not heard?  the Lord is the
everlasting God, who hath created the ends of the earth:  he shall not
faint, nor labour, neither is there any searching out of his wisdom.

40:29. It is he that giveth strength to the weary, and increaseth force
and might to them that are not.

40:30. You shall faint, and labour, and young men shall fall by
infirmity.

40:31. But they that hope in the Lord shall renew their strength, they
shall take wings as eagles, they shall run and not be weary, they shall
walk and not faint.



Isaias Chapter 41


The reign of the just one:  the vanity of idols.

41:1. Let the islands keep silence before me, and the nations take new
strength:  let them come near, and then speak, let us come near to
judgment together.

41:2. Who hath raised up the just one from the east, hath called him to
follow him?  he shall give the nations in his sight, and he shall rule
over kings:  he shall give them as the dust to his sword, as stubble
driven by the wind, to his bow.

41:3. He shall pursue them, he shall pass in peace, no path shall
appear after his feet.

41:4. Who hath wrought and done these things, calling the generations
from the beginning?  I the Lord, I am the first and the last.

41:5. The islands saw it, and feared, the ends of the earth were
astonished, they drew near, and came.

41:6. Every one shall help his neighbour, and shall say to his brother:
Be of good courage.

41:7. The coppersmith striking with the hammer encouraged him that
forged at that time, saying:  It is ready for soldering:  and he
strengthened it with nails, that it should not be moved.

41:8. But thou Israel, art my servant, Jacob whom I have chosen, the
seed of Abraham my friend:

41:9. In whom I have taken thee from the ends of the earth, and from
the remote parts thereof have called thee, and said to thee:  Thou art
my servant, I have chosen thee, and have not cast thee away.

41:10. Fear not, for I am with thee:  turn not aside, for I am thy God:
I have strengthened thee, and have helped thee, and the right hand of
my just one hath upheld thee.

41:11. Behold all that fight against thee shall be confounded and
ashamed, they shall be as nothing, and the men shall perish that strive
against thee.

41:12. Thou shalt seek them, and shalt not find the men that resist
thee:  they shall be as nothing:  and as a thing consumed the men that
war against thee.

41:13. For I am the Lord thy God, who take thee by the hand, and say to
thee:  Fear not, I have helped thee.

41:14. Fear not, thou worm of Jacob, you that are dead of Israel:  I
have helped thee, saith the Lord:  and thy Redeemer the Holy One of
Israel.

41:15. I have made thee as a new thrashing wain, with teeth like a saw:
thou shalt thrash the mountains, and break them in pieces:  and shalt
make the hills as chaff.

41:16. Thou shalt fan them, and the wind shall carry them away, and the
whirlwind shall scatter them:  and thou shalt rejoice in the Lord, in
the Holy One of Israel thou shalt be joyful.

41:17. The needy and the poor seek for waters, and there are none:
their tongue hath been dry with thirst.  I the Lord will hear them, I
the God of Israel will not forsake them.

41:18. I will open rivers in the high hills, and fountains in the midst
of the plains:  I will turn the desert into pools of waters, and the
impassable land into streams of waters.

41:19. I will plant in the wilderness the cedar, and the thorn, and the
myrtle, and the olive tree:  I will set in the desert the fir tree, the
elm, and the box tree together:

The thorn. . .In Hebrew, the shitta, or setim, a tree resembling the
white thorn.

41:20. That they may see and know, and consider, and understand
together that the hand of the Lord hath done this, and the Holy One of
Israel hath created it.

41:21. Bring your cause near, saith the Lord:  bring hither, if you have
any thing to allege, saith the King of Jacob.

41:22. Let them come, and tell us all things that are to come:  tell us
the former things what they were:  and we will set our heart upon them
and shall know the latter end of them, and tell us the things that are
to come.

41:23. Shew the things that are to come hereafter, and we shall know
that ye are gods.  Do ye also good or evil, if you can:  and let us
speak, and see together.

41:24. Behold, you are of nothing, and your work of that which hath no
being:  he that hath chosen you is an abomination.

41:25. I have raised up one from the north, and he shall come from the
rising of the sun:  he shall call upon my name, and he shall make
princes to be as dirt, and as the potter treading clay.

41:26. Who hath declared from the beginning, that we may know:  and from
time of old, that we may say:  Thou art just.  There is none that
sheweth, nor that foretelleth, nor that heareth your words.

41:27. The first shall say to Sion:  Behold they are here, and to
Jerusalem I will give an evangelist.

41:28. And I saw, and there was no one even among them to consult, or
who, when I asked, could answer a word.

41:29. Behold they are all in the wrong, and their works are vain:
their idols are wind and vanity.



Isaias Chapter 42


The office of Christ.  The preaching of the gospel to the Gentiles.  The
blindness and reprobation of the Jews.

42:1. Behold my servant, I will uphold him:  my elect, my soul
delighteth in him:  I have given my spirit upon him, he shall bring
forth judgment to the Gentiles.

My servant. . .Christ, who according to his humanity, is the servant of
God.

42:2. He shall not cry, nor have respect to person, neither shall his
voice be heard abroad.

42:3. The bruised reed he shall not break, and smoking flax he shall
not quench, he shall bring forth judgment unto truth.

42:4. He shall not be sad, nor troublesome, till he set judgment in the
earth, and the islands shall wait for his law.

42:5. Thus saith the Lord God that created the heavens, and stretched
them out:  that established the earth, and the things that spring out of
it:  that giveth breath to the people upon it, and spirit to them that
tread thereon.

42:6. I the Lord have called thee in justice, and taken thee by the
hand, and preserved thee.  And I have given thee for a covenant of the
people, for a light of the Gentiles:

42:7. That thou mightest open the eyes of the blind, and bring forth
the prisoner out of prison, and them that sit in darkness out of the
prison house.

42:8. I the Lord, this is my name:  I will not give my glory to another,
nor my praise to graven things.

42:9. The things that were first, behold they are come:  and new things
do I declare:  before they spring forth, I will make you hear them.

42:10. Sing ye to the Lord a new song, his praise is from the ends of
the earth:  you that go down to the sea, and all that are therein:  ye
islands, and ye inhabitants of them.

42:11. Let the desert and the cities thereof be exalted:  Cedar shall
dwell in houses:  ye inhabitants of Petra, give praise, they shall cry
from the top of the mountains.

Petra. . .A city that gives name to Arabia Petraea.

42:12. They shall give glory to the Lord, and shall declare his praise
in the islands.

42:13. The Lord shall go forth as a mighty man, as a man of war shall
he stir up zeal:  he shall shout and cry:  he shall prevail against his
enemies.

42:14. I have always held my peace, I have kept silence, I have been
patient, I will speak now as a woman in labour:  I will destroy, and
swallow up at once.

42:15. I will lay waste the mountains and hills, and will make all
their grass to wither:  and I will turn rivers into islands, and will
dry up the standing pools.

42:16. And I will lead the blind into the way which they know not:  and
in the paths which they were ignorant of I will make them walk:  I will
make darkness light before them, and crooked things straight:  these
things have I done to them, and have not forsaken them.

42:17. They are turned back:  let them be greatly confounded, that trust
in a graven thing, that say to a molten thing:  You are our god.

42:18. Hear, ye deaf, and, ye blind, behold that you may see.

42:19. Who is blind, but my servant?  or deaf, but he to whom I have
sent my messengers?  Who is blind, but he that is sold?  or who is blind,
but the servant of the Lord?

42:20. Thou that seest many things, wilt thou not observe them?  thou
that hast ears open, wilt thou not hear?

42:21. And the Lord was willing to sanctify him, and to magnify the
law, and exalt it.

42:22. But this is a people that is robbed and wasted:  they are all the
snare of young men, and they are hid in the houses of prisons:  they are
made a prey, and there is none to deliver them:  a spoil, and there is
none that saith:  Restore.

42:23. Who is there among you that will give ear to this, that will
attend and hearken for times to come?

42:24. Who hath given Jacob for a spoil, and Israel to robbers?  hath
not the Lord himself, against whom we have sinned?  And they would not
walk in his ways, and they have not hearkened to his law.

42:25. And he hath poured out upon him the indignation of his fury, and
a strong battle, and hath burnt him round about, and he knew not:  and
set him on fire, and he understood not.



Isaias Chapter 43


God comforts his church, promising to protect her for ever:  he
expostulates with the Jews for their ingratitude.

43:1. And now thus saith the Lord that created thee, O Jacob, and
formed thee, O Israel:  Fear not, for I have redeemed thee, and called
thee by thy name:  thou art mine.

43:2. When thou shalt pass through the waters, I will be with thee, and
the rivers shall not cover thee:  when thou shalt walk in the fire, thou
shalt not be burnt, and the flames shall not burn in thee:

43:3. For I am the Lord thy God, the Holy One of Israel, thy Saviour:  I
have given Egypt for thy atonement, Ethiopia and Saba for thee.

43:4. Since thou becamest honourable in my eyes, thou art glorious:  I
have loved thee, and I will give men for thee, and people for thy life.

43:5. Fear not, for I am with thee:  I will bring thy seed from the
east, and gather thee from the west.

43:6. I will say to the north:  Give up:  and to the south:  Keep not
back:  bring my sons from afar, and my daughters from the ends of the
earth.

43:7. And every one that calleth upon my name, I have created him for
my glory.  I have formed him, and made him.

43:8. Bring forth the people that are blind, and have eyes:  that are
deaf, and have ears.

43:9. All the nations are assembled together, and the tribes are
gathered:  who among you can declare this, and shall make us hear the
former things?  let them bring forth their witnesses, let them be
justified, and hear, and say:  It is truth.

43:10. You are my witnesses, saith the Lord, and my servant whom I have
chosen:  that you may know, and believe me, and understand that I myself
am.  Before me there was no God formed, and after me there shall be
none.

43:11. I am, I am the Lord:  and there is no saviour besides me.

43:12. I have declared, and have saved.  I have made it heard, and there
was no strange one among you.  You are my witnesses, saith the Lord, and
I am God.

43:13. And from the beginning I am the same, and there is none that can
deliver out of my hind:  I will work, and who shall turn it away?

43:14. Thus saith the Lord your redeemer, the Holy One of Israel:  For
your sake I sent to Babylon, and have brought down all their bars, and
the Chaldeans glorying in their ships.

43:15. I am the Lord your Holy One, the Creator of Israel, your King.

43:16. Thus saith the Lord, who made a way in the sea, and a path in
the mighty waters.

43:17. Who brought forth the chariot and the horse, the army and the
strong:  they lay down to sleep together, and they shall not rise again:
they are broken as flax, and are extinct.

43:18. Remember not former things, and look not on things of old.

43:19. Behold I do new things, and now they shall spring forth, verily
you shall know them:  I will make a way in the wilderness, and rivers in
the desert.

43:20. The beast of the field shall glorify me, the dragons and the
ostriches:  because I have given waters in the wilderness, rivers in the
desert, to give drink to my people, to my chosen.

43:21. This people have I formed for myself, they shall shew forth my
praise.

43:22. But thou hast not called upon me, O Jacob, neither hast thou
laboured about me, O Israel.

43:23. Thou hast not offered me the ram of thy holocaust, nor hast thou
glorified me with thy victims:  I have not caused thee to serve with
oblations, nor wearied thee with incense.

43:24. Thou hast bought me no sweet cane with money, neither hast thou
filled me with the fat of thy victims.  But thou hast made me to serve
with thy sins, thou hast wearied me with thy iniquities.

43:25. I am, I am he that blot out thy iniquities for my own sake, and
I will not remember thy sins.

43:26. Put me in remembrance, and let us plead together:  tell if thou
hast any thing to justify thyself.

43:27. Thy first father sinned, and thy teachers have transgressed
against me.

43:28. And I have profaned the holy princes, I have given Jacob to
slaughter, and Israel to reproach.



Isaias Chapter 44


God's favour to his church.  The folly of idolatry.  The people shall be
delivered from captivity.

44:1. And now hear, O Jacob, my servant, and Israel whom I have chosen.

44:2. Thus saith the Lord that made and formed thee, thy helper from
the womb:  Fear not, O my servant Jacob, and thou most righteous whom I
have chosen.

44:3. For I will pour out waters upon the thirsty ground, and streams
upon the dry land:  I will pour out my spirit upon thy seed, and my
blessing upon thy stock.

44:4. And they shall spring up among the herbs, as willows beside the
running waters.

44:5. One shall say:  I am the Lord's, and another shall call himself by
the name of Jacob, and another shall subscribe with his hand, To the
Lord, and surname himself by the name of Israel.

44:6. Thus saith the Lord the king of Israel, and his redeemer the Lord
of hosts:  I am the first, and I am the last, and besides me there is no
God.

44:7. Who is like to me?  let him call and declare:  and let him set
before me the order, since I appointed the ancient people:  and the
things to come, and that shall be hereafter, let them shew unto them.

44:8. Fear ye not, neither be ye troubled from that time I have made
thee to hear, and have declared:  you are my witnesses.  Is there a God
besides me, a maker, whom I have not known?

44:9. The makers of idols are all of them nothing, and their best
beloved things shall not profit them.  They are their witnesses, that
they do not see, nor understand, that they may be ashamed.

44:10. Who hath formed a god, and made a graven thing that is
profitable for nothing?

44:11. Behold, all the partakers thereof shall be confounded:  for the
makers are men:  they shall all assemble together, they shall stand and
fear, and shall be confounded together.

44:12. The smith hath wrought with his file, with coals, and with
hammers he hath formed it, and hath wrought with the strength of his
arm:  he shall hunger and faint, he shall drink no water, and shall be
weary.

44:13. The carpenter hath stretched out his rule, he hath formed it
with a plane:  he hath made it with corners, and hath fashioned it round
with the compass:  and he hath made the image of a man as it were a
beautiful man dwelling in a house.

44:14. He hath cut down cedars, taken the holm, and the oak that stood
among the trees of the forest:  he hath planted the pine tree, which the
rain hath nourished.

44:15. And it hath served men for fuel:  he took thereof, and warmed
himself:  and he kindled it, and baked bread:  but of the rest he made a
god, and adored it:  he made a graven thing, and bowed down before it.

44:16. Part of it he burnt with fire, and with part of it he dressed
his meat:  he boiled pottage, and was filled, and was warmed, and said:
Aha, I am warm, I have seen the fire.

44:17. But the residue thereof he made a god, and a graven thing for
himself:  he boweth down before it, and adoreth it, and prayeth unto it,
saying:  Deliver me, for thou art my God.

44:18. They have not known, nor understood:  for their eyes are covered
that they may not see, and that they may not understand with their
heart.

44:19. They do not consider in their mind, nor know, nor have the
thought to say:  I have burnt part of it in the fire, and I have baked
bread upon the coals thereof:  I have broiled flesh and have eaten, and
of the residue thereof shall I make an idol?  shall I fall down before
the stock of a tree?

44:20. Part thereof is ashes:  his foolish heart adoreth it, and he will
not save his soul, nor say:  Perhaps there is a lie in my right hand.

44:21. Remember these things, O Jacob, and Israel, for thou art my
servant.  I have formed thee, thou art my servant, O Israel, forget me
not.

44:22. I have blotted out thy iniquities as a cloud, and thy sins as a
mist:  return to me, for I have redeemed thee.

44:23. Give praise, O ye heavens, for the Lord hath shewn mercy:  shout
with joy, ye ends of the earth:  ye mountains, resound with praise,
thou, O forest, and every tree therein:  for the Lord hath redeemed
Jacob, and Israel shall be glorified.

44:24. Thus saith the Lord thy redeemer, and thy maker, from the womb:
I am the Lord, that make all things, that alone stretch out the
heavens, that established the earth, and there is none with me.

44:25. That make void the tokens of diviners, and make the soothsayers
mad.  That turn the wise backward, and that make their knowledge
foolish.

44:26. That raise up the word of my servant and perform the counsel of
my messengers, who say to Jerusalem:  Thou shalt be inhabited:  and to
the cities of Juda:  You shall be built, and I will raise up the wastes
thereof.

44:27. Who say to the deep:  Be thou desolate, and I will dry up thy
rivers.

44:28. Who say to Cyrus:  Thou art my shepherd, and thou shalt perform
all my pleasure.  Who say to Jerusalem:  Thou shalt be built:  and to the
temple:  Thy foundations shall be laid.



Isaias Chapter 45


A prophecy of Cyrus, as a figure of Christ, the great deliverer of
God's people.

45:1. Thus saith the Lord to my anointed Cyrus, whose right hand I have
taken hold of, to subdue nations before his face, and to turn the backs
of kings, and to open the doors before him, and the gates shall not be
shut.

45:2. I will go before thee, and will humble the great ones of the
earth:  I will break in pieces the gates of brass, and will burst the
bars of iron.

45:3. And I will give thee hidden treasures, and the concealed riches
of secret places:  that thou mayest know that I am the Lord who call
thee by thy name, the God of Israel.

45:4. For the sake of my servant Jacob, and Israel my elect, I have
even called thee by thy name:  I have made a likeness of thee, and thou
hast not known me.

45:5. I am the Lord, and there is none else:  there is no God besides
me:  I girded thee, and thou hast not known me:

45:6. That they may know who are from the rising of the sun, and they
who are from the west, that there is none besides me.  I am the Lord,
and there is none else:

45:7. I form the light, and create darkness, I make peace, and create
evil:  I the Lord that do all these things.

Create evil, etc. . .The evils of afflictions and punishments, but not
the evil of sin.

45:8. Drop down dew, ye heavens, from above, and let the clouds rain
the just:  let the earth be opened, and bud forth a saviour:  and let
justice spring up together:  I the Lord have created him.

45:9. Woe to him that gainsayeth his maker, a sherd of the earthen
pots:  shall the clay say to him that fashioneth it:  What art thou
making, and thy work is without hands?

45:10. Woe to him that saith to his father:  Why begettest thou?  and to
the woman:  Why dost thou bring forth?

45:11. Thus saith the Lord the Holy One of Israel, his maker:  Ask me of
things to come, concerning my children, and concerning the work of my
hands give ye charge to me.

45:12. I made the earth:  and I created man upon it:  my hand stretched
forth the heavens, and I have commanded all their host.

45:13. I have raised him up to justice, and I will direct all his ways:
he shall build my city, and let go my captives, not for ransom, nor for
presents, saith the Lord the God of hosts.

45:14. Thus saith the Lord:  The labour of Egypt, and the merchandise of
Ethiopia, and of Sabaim, men of stature shall come over to thee, and
shall be thine:  they shall walk after thee, they shall go bound with
manacles:  and they shall worship thee, and shall make supplication to
thee:  only in thee is God, and there is no God besides thee.

45:15. Verily thou art a hidden God, the God of Israel the saviour.

45:16. They are all confounded and ashamed:  the forgers of errors are
gone together into confusion.

45:17. Israel is saved in the Lord with an eternal salvation:  you shall
not be confounded, and you shall not be ashamed for ever and ever.

45:18. For thus saith the Lord that created the heavens, God himself
that formed the earth, and made it, the very maker thereof:  he did not
create it in vain:  he formed it to be inhabited.  I am the Lord, and
there is no other.

45:19. I have not spoken in secret, in a dark place of the earth:  I
have not said to the seed of Jacob:  Seek me in vain.  I am the Lord that
speak justice, that declare right things.

45:20. Assemble yourselves, and come, and draw near together, ye that
are saved of the Gentiles:  they have no knowledge that set up the wood
of their graven work, and pray to a god that cannot save.

45:21. Tell ye, and come, and consult together:  who hath declared this
from the beginning, who hath foretold this from that time?  Have not I
the Lord, and there is no God else besides me?  A just God and a
saviour, there is none besides me.

45:22. Be converted to me, and you shall be saved, all ye ends of the
earth:  for I am God, and there is no other.

45:23. I have sworn by myself, the word of justice shall go out of my
mouth, and shall not return:

45:24. For every knee shall be bowed to me, and every tongue shall
swear.

45:25. Therefore shall he say:  In the Lord are my justices and empire:
they shall come to him, and all that resist him shall be confounded.

45:26. In the Lord shall all the seed of Israel be justified and
praised.



Isaias Chapter 46


The idols of Babylon shall be destroyed.  Salvation is promised through
Christ.

46:1. Bel is broken, Nebo is destroyed:  their idols are put upon beasts
and cattle, your burdens of heavy weight even unto weariness.

46:2. They are consumed, and are broken together:  they could not save
him that carried them, and they themselves shall go into captivity.

46:3. Hearken unto me, O house of Jacob, all the remnant of the house
of Israel who are carried by my bowels, are borne up by my womb.

46:4. Even to your old age I am the same, and to your grey hairs I will
carry you:  I have made you, and I will bear:  I will carry and will
save.

46:5. To whom have you likened me, and made me equal, and compared me,
and made me like?

46:6. You that contribute gold out of the bag, and weigh out silver in
the scales:  and hire a goldsmith to make a god:  and they fall down and
worship.

46:7. They bear him on their shoulders and carry him, and set him in
his place, and he shall stand, and shall not stir out of his place.
Yea, when they shall cry also unto him, he shall not hear:  he shall not
save them from tribulation.

46:8. Remember this, and be ashamed:  return, ye transgressors, to the
heart.

46:9. Remember the former age, for I am God, and there is no God
beside, neither is there the like to me:

46:10. Who shew from the beginning the things that shall be at last,
and from ancient times the things that as yet are not done, saying:  My
counsel shall stand, and all my will shall be done:

46:11. Who call a bird from the east, and from a far country the man of
my own will, and I have spoken, and will bring it to pass:  I have
created, and I will do it.  Hear me, O ye hardhearted, who are far from
justice.

46:12. I have brought my justice near, it shall not be afar off:  and my
salvation shall not tarry.  I will give salvation in Sion, and my glory
in Israel.



Isaias Chapter 47


God's judgment upon Babylon.

47:1. Come down, sit in the dust, O virgin daughter of Babylon, sit on
the ground:  there is no throne for the daughter of the Chaldeans, for
thou shalt no more be called delicate and tender.

47:2. Take a millstone and grind meal:  uncover thy shame, strip thy
shoulder, make bare thy legs, pass over the rivers.

47:3. Thy nakedness shall be discovered, and thy shame shall be seen:  I
will take vengeance, and no man shall resist me.

47:4. Our redeemer, the Lord of hosts is his name, the Holy One of
Israel.

47:5. Sit thou silent, and get thee into darkness, O daughter of the
Chaldeans:  for thou shalt no more be called the lady of kingdoms.

47:6. I was angry with my people, I have polluted my inheritance, and
have given them into thy hand:  thou hast shewn no mercy to them:  upon
the ancient thou hast laid thy yoke exceeding heavy.

47:7. And thou hast said:  I shall be a lady for ever:  thou hast not
laid these things to thy heart, neither hast thou remembered thy latter
end.

47:8. And now hear these things, thou that art delicate, and dwellest
confidently, that sayest in thy heart:  I am, and there is none else
besides me:  I shall not sit as a widow, and I shall not know
barrenness.

47:9. These two things shall come upon thee suddenly in one day,
barrenness and widowhood.  All things are come upon thee, because of the
multitude of thy sorceries, and for the great hardness of thy
enchanters.

47:10. And thou hast trusted in thy wickedness, and hast said:  There is
none that seeth me.  Thy wisdom, and, thy knowledge, this hath deceived
thee.  And thou hast said in thy heart:  I am, and besides me there is no
other.

47:11. Evil shall come upon thee, and thou shalt not know the rising
thereof:  and calamity shall fall violently upon thee, which thou canst
not keep off:  misery shall come upon thee suddenly, which thou shalt
not know.

47:12. Stand now with thy enchanters, and with the multitude of thy
sorceries, in which thou hast laboured from thy youth, if so be it may
profit thee any thing, or if thou mayst become stronger.

47:13. Thou hast failed in the multitude of thy counsels:  let now the
astrologers stand and save thee, they that gazed at the stars, and
counted the months, that from them they might tell the things that
shall come to thee.

47:14. Behold they are as stubble, fire hath burnt them, they shall not
deliver themselves from the power of the flames:  there are no coals
wherewith they may be warmed, nor fire, that they may sit thereat.

47:15. Such are all the things become to thee, in which thou hast
laboured:  thy merchants from thy youth, every one hath erred in his own
way, there is none that can save thee.



Isaias Chapter 48


He reproaches the Jews for their obstinacy:  he will deliver them out of
their captivity, for his own name's sake.

48:1. Hear ye these things, O house of Jacob, you that are called by
the name of Israel, and are come forth out of the waters of Juda, you
who swear by the name of the Lord, and make mention of the God of
Israel, but not in truth, nor in justice.

48:2. For they are called of the holy city, and are established upon
the God of Israel:  the Lord of hosts is his name.

48:3. The former things of old, I have declared, and they went forth
out of my mouth, and I have made them to be heard:  I did them suddenly
and they came to pass.

48:4. For I knew that thou art stubborn, and thy neck is as an iron
sinew, and thy forehead as brass.

48:5. I foretold thee of old, before they came to pass I told thee,
lest thou shouldst say:  My idols have done these things, and my graven
and molten things have commanded them.

48:6. See now all the things which thou hast heard:  but have you
declared them?  I have shewn thee new things from that time, and things
are kept which thou knowest not:

48:7. They are created now, and not of old:  and before the day, when
thou heardest them not, lest thou shouldst say:  Behold I knew them.

48:8. Thou hast neither heard, nor known, neither was thy ear opened of
old.  For I know that transgressing thou wilt transgress, and I have
called thee a transgressor from the womb.

48:9. For my name's sake I will remove my wrath far off:  and for my
praise I will bridle thee, lest thou shouldst perish.

48:10. Behold I have refined thee, but not as silver, I have chosen
thee in the furnace of poverty.

48:11. For my own sake, for my own sake will I do it, that I may not be
blasphemed:  and I will not give my glory to another.

48:12. Hearken to me, O Jacob, and thou Israel whom I call:  I am he, I
am the first, and I am the last.

48:13. My hand also hath founded the earth, and my right hand hath
measured the heavens:  I shall call them, and they shall stand together.

48:14. Assemble yourselves together, all you, and hear:  who among them
hath declared these things?  the Lord hath loved him, he will do his
pleasure in Babylon, and his arm shall be on the Chaldeans.

48:15. I, even I have spoken and called him:  I have brought him, and
his way is made prosperous.

48:16. Come ye near unto me, and hear this:  I have not spoken in secret
from the beginning:  from the time before it was done, I was there, and
now the Lord God hath sent me, and his spirit.

48:17. Thus saith the Lord thy redeemer, the Holy One of Israel:  I am
the Lord thy God that teach thee profitable things, that govern thee in
the way that thou walkest.

48:18. O that thou hadst hearkened to my commandments:  thy peace had
been as a river, and thy justice as the waves of the sea,

48:19. And thy seed had been as the sand, and the offspring of thy
bowels like the gravel thereof:  his name should not have perished, nor
have been destroyed from before my face.

48:20. Come forth out of Babylon, flee ye from the Chaldeans, declare
it with the voice of joy:  make this to be heard, and speak it out even
to the ends of the earth.  Say:  The Lord hath redeemed his servant
Jacob.

48:21. They thirsted not in the desert, when he led them out:  he
brought forth water out of the rock for them, and he clove the rock,
and the waters gushed out.

48:22. There is no peace to the wicked, saith the Lord.



Isaias Chapter 49


Christ shall bring the Gentiles to salvation.  God's love to his church
is perpetual.

49:1. Give ear, ye islands, and hearken, ye people from afar.  The Lord
hath called me from the womb, from the bowels of my mother he hath been
mindful of my name.

49:2. And he hath made my mouth like a sharp sword:  in the shadow of
his hand he hath protected me, and hath made me as a chosen arrow:  in
his quiver he hath hidden me.

49:3. And he said to me:  Thou art my servant Israel, for in thee will I
glory.

49:4. And I said:  I have laboured in vain, I have spent my strength
without cause and in vain:  therefore my judgment is with the Lord, and
my work with my God.

49:5. And now saith the Lord, that formed me from the womb to be his
servant, that I may bring back Jacob unto him, and Israel will not be
gathered together:  and I am glorified in the eyes of the Lord, and my
God is made my strength.

49:6. And he said:  It is a small thing that thou shouldst be my servant
to raise up the tribes of Jacob, and to convert the dregs of Israel.
Behold, I have given thee to be the light of the Gentiles, that thou
mayst be my salvation even to the farthest part of the earth.

49:7. Thus saith the Lord the redeemer of Israel, his Holy One, to the
soul that is despised, to the nation that is abhorred, to the servant
of rulers:  Kings shall see, and princes shall rise up, and adore for
the Lord's sake, because he is faithful, and for the Holy One of
Israel, who hath chosen thee.

49:8. Thus saith the Lord:  In an acceptable time I have heard thee, and
in the day of salvation I have helped thee:  and I have preserved thee,
and given thee to be a covenant of the people, that thou mightest raise
up the earth, and possess the inheritances that were destroyed:

49:9. That thou mightest say to them that are bound:  Come forth:  and to
them that are in darkness:  Shew yourselves.  They shall feed in the
ways, and their pastures shall be in every plain.

49:10. They shall not hunger, nor thirst, neither shall the heat nor
the sun strike them:  for he that is merciful to them, shall be their
shepherd, and at the fountains of waters he shall give them drink.

49:11. And I will make all my mountains a way, and my paths shall be
exalted.

49:12. Behold these shall come from afar, and behold these from the
north and from the sea, and these from the south country.

49:13. Give praise, O ye heavens, and rejoice, O earth, ye mountains,
give praise with jubilation:  because the Lord hath comforted his
people, and will have mercy on his poor ones.

49:14. And Sion said:  The Lord hath forsaken me, and the Lord hath
forgotten me.

49:15. Can a woman forget her infant, so as not to have pity on the son
of her womb?  and if she should forget, yet will not I forget thee.

49:16. Behold, I have graven thee in my hands:  thy walls are always
before my eyes.

49:17. Thy builders are come:  they that destroy thee and make thee
waste shall go out of thee.

49:18. Lift up thy eyes round about, and see all these are gathered
together, they are come to thee:  I live, saith the Lord, thou shalt be
clothed with all these as with an ornament, and as a bride thou shalt
put them about thee.

49:19. For thy deserts, and thy desolate places, and the land of thy
destruction shall now be too narrow by reason of the inhabitants, and
they that swallowed thee up shall be chased far away.

49:20. The children of thy barrenness shall still say in thy ears:  The
place is too strait for me, make me room to dwell in.

49:21. And thou shalt say in thy heart:  Who hath begotten these?  I was
barren and brought not forth, led away, and captive:  and who hath
brought up these?  I was destitute and alone:  and these, where were
they?

49:22. Thus saith the Lord God:  Behold I will lift up my hand to the
Gentiles, and will set up my standard to the people.  And they shall
bring thy sons in their arms, and carry thy daughters upon their
shoulders.

49:23. And kings shall be thy nursing fathers, and queens thy nurses:
they shall worship thee with their face toward the earth, and they
shall lick up the dust of thy feet.  And thou shalt know that I am the
Lord, for they shall not be confounded that wait for him.

49:24. Shall the prey be taken from the strong?  or can that which was
taken by the mighty, be delivered?

49:25. For thus saith the Lord:  Yea verily, even the captivity shall be
taken away from the strong:  and that which was taken by the mighty,
shall be delivered.  But I will judge those that have judged thee, and
thy children I will save.

49:26. And I will feed thy enemies with their own flesh:  and they shall
be made drunk with their own blood, as with new wine:  and all flesh
shall know, that I am the Lord that save thee, and thy Redeemer the
Mighty One of Jacob.



Isaias Chapter 50


The synagogue shall be divorced for her iniquities.  Christ for her sake
will endure ignominious afflictions.

50:1. Thus saith the Lord:  What is this bill of the divorce of your
mother, with which I have put her away?  or who is my creditor, to whom
I sold you:  behold you are sold for your iniquities, and for your
wicked deeds have I put your mother away.

50:2. Because I came, and there was not a man:  I called, and there was
none that would hear.  Is my hand shortened and become little, that I
cannot redeem?  or is there no strength in me to deliver?  Behold at my
rebuke I will make the sea a desert, I will turn the rivers into dry
land:  the fishes shall rot for want of water, and shall die for thirst.

50:3. I will clothe the heavens with darkness, and will make sackcloth
their covering.

50:4. The Lord hath given me a learned tongue, that I should know how
to uphold by word him that is weary:  he wakeneth in the morning, in the
morning he wakeneth my ear, that I may hear him as a master.

50:5. The Lord God hath opened my ear, and I do not resist:  I have not
gone back.

50:6. I have given my body to the strikers, and my cheeks to them that
plucked them:  I have not turned away my face from them that rebuked me,
and spit upon me.

50:7. The Lord God is my helper, therefore am I not confounded:
therefore have I set my face as a most hard rock, and I know that I
shall not be confounded.

50:8. He is near that justifieth me, who will contend with me?  let us
stand together, who is my adversary?  let him come near to me.

50:9. Behold the Lord God is my helper:  who is he that shall condemn
me?  Lo, they shall all be destroyed as a garment, the moth shall eat
them up.

50:10. Who is there among you that feareth the Lord, that heareth the
voice of his servant, that hath walked in darkness, and hath no light?
let him hope in the name of the Lord, and lean upon his God.

50:11. Behold all you that kindle a fire, encompassed with flames, walk
in the light of your fire, and in the flames which you have kindled:
this is done to you by my hand, you shall sleep in sorrows.



Isaias Chapter 51


An exhortation to trust in Christ.  He shall protect the children of his
church.

51:1. Give ear to me, you that follow that which is just, and you that
seek the Lord:  look unto the rock whence you are hewn, and to the hole
of the pit from which you are dug out.

51:2. Look unto Abraham your father, and to Sara that bore you:  for I
called him alone, and blessed him, and multiplied him.

51:3. The Lord therefore will comfort Sion, and will comfort all the
ruins thereof:  and he will make her desert as a place of pleasure, and
her wilderness as the garden of the Lord.  Joy and gladness shall be
found therein, thanksgiving, and the voice of praise.

51:4. Hearken unto me, O my people, and give ear to me, O my tribes:
for a law shall go forth from me, and my judgment shall rest to be a
light of the nations.

51:5. My just one is near at hand, my saviour is gone forth, and my
arms shall judge the people:  the islands shall look for me, and shall
patiently wait for my arm.

51:6. Lift up your eyes to heaven, and look down to the earth beneath:
for the heavens shall vanish like smoke, and the earth shall be worn
away like a garment, and the inhabitants thereof shall perish in like
manner:  but my salvation shall be for ever, and my justice shall not
fail.

51:7. Hearken to me, you that know what is just, my people who have my
law in your heart:  fear ye not the reproach of men, and be not afraid
of their blasphemies.

51:8. For the worm shall eat them up as a garment:  and the moth shall
consume them as wool:  but my salvation shall be for ever, and my
justice from generation to generation.

51:9. Arise, arise, put on strength, O thou arm of the Lord, arise as
in the days of old, in the ancient generations.  Hast not thou struck
the proud one, and wounded the dragon?

51:10. Hast not thou dried up the sea, the water of the mighty deep,
who madest the depth of the sea a way, that the delivered might pass
over?

51:11. And now they that are redeemed by the Lord, shall return, and
shall come into Sion singing praises, and joy everlasting shall be upon
their heads, they shall obtain joy and gladness, sorrow and mourning
shall flee away.

51:12. I myself will comfort you:  who art thou, that thou shouldst be
afraid of a mortal man, and of the son of man, who shall wither away
like grass?

51:13. And thou hast forgotten the Lord thy maker, who stretched out
the heavens, and founded the earth:  and thou hast been afraid
continually all the day at the presence of his fury who afflicted thee,
and had prepared himself to destroy thee:  where is now the fury of the
oppressor?

51:14. He shall quickly come that is going to open unto you, and he
shall not kill unto utter destruction, neither shall his bread fail.

51:15. But I am the Lord thy God, who trouble the sea, and the waves
thereof swell:  the Lord of hosts is my name.

51:16. I have put my words in thy mouth, and have protected thee in the
shadow of my hand, that thou mightest plant the heavens, and found the
earth:  and mightest say to Sion:  Thou art my people.

51:17. Arise, arise, stand up, O Jerusalem, which hast drunk at the
hand of the Lord the cup of his wrath; thou hast drunk even to the
bottom of the cup of dead sleep, and thou hast drunk even to the dregs.

51:18. There is none that can uphold her among all the children that
she hath brought forth:  and there is none that taketh her by the hand
among all the children that she hath brought up.

51:19. There are two things that have happened to thee:  who shall be
sorry for thee?  desolation, and destruction, and the famine, and the
sword, who shall comfort thee?

51:20. Thy children are cast forth, they have slept at the head of all
the ways, and the wild ox that is snared:  full of the indignation of
the Lord, of the rebuke of thy God.

51:21. Therefore hear this, thou poor little one, and thou that art
drunk but not with wine.

51:22. Thus saith thy Sovereign the Lord, and thy God, who will fight
for his people:  Behold I have taken out of thy hand the cup of dead
sleep, the dregs of the cup of my indignation, thou shalt not drink it
again any more.

51:23. And I will put it in the hand of them that have oppressed thee,
and have said to thy soul:  Bow down, that we may go over:  and thou hast
laid thy body as the ground, and as a way to them that went over.



Isaias Chapter 52


Under the figure of the deliverance from the Babylonish captivity, the
church is invited to rejoice for her redemption from sin.  Christ's
kingdom shall be exalted.

52:1. Arise, arise, put on thy strength, O Sion, put on the garments of
thy glory, O Jerusalem, the city of the Holy One:  for henceforth the
uncircumcised, and unclean shall no more pass through thee.

52:2. Shake thyself from the dust, arise, sit up, O Jerusalem:  loose
the bonds from off thy neck, O captive daughter of Sion.

52:3. For thus saith the Lord:  You were sold gratis, and you shall be
redeemed, without money.

52:4. For thus saith the Lord God:  My people went down into Egypt at
the beginning to sojourn there:  and the Assyrian hath oppressed them
without any cause at all.

52:5. And now what have I here, saith the Lord:  for my people is taken
away gratis.  They that rule over them treat them unjustly, saith the
Lord, and my name is continually blasphemed all the day long.

52:6. Therefore my people shall know my name in that day:  for I myself
that spoke, behold I am here.

52:7. How beautiful upon the mountains are the feet of him that
bringeth good tidings, and that preacheth peace:  of him that sheweth
forth good, that preacheth salvation, that saith to Sion:  Thy God shall
reign!

52:8. The voice of thy watchmen:  they have lifted up their voice, they
shall praise together:  for they shall see eye to eye when the Lord
shall convert Sion.

52:9. Rejoice, and give praise together, O ye deserts of Jerusalem:  for
the Lord hath comforted his people:  he hath redeemed Jerusalem.

52:10. The Lord hath prepared his holy arm in the sight of all the
Gentiles:  and all the ends of the earth shall see the salvation of our
God.

52:11. Depart, depart, go ye out from thence, touch no unclean thing:
go out of the midst of her, be ye clean, you that carry the vessels of
the Lord.

52:12. For you shall not go out in a tumult, neither shall you make
haste by flight:  for the Lord will go before you, and the God of Israel
will gather you together.

52:13. Behold my servant shall understand, he shall be exalted, and
extolled, and shall be exceeding high.

52:14. As many have been astonished at thee, so shall his visage be
inglorious among men, and his form among the sons of men.

52:15. He shall sprinkle many nations, kings shall shut their mouth at
him:  for they to whom it was not told of him, have seen:  and they that
heard not, have beheld.



Isaias Chapter 53


A prophecy of the passion of Christ.

53:1. Who a hath believed our report?  and to whom is the arm of the
Lord revealed?

53:2. And he shall grow up as a tender plant before him, and as a root
out of a thirsty ground:  there is no beauty in him, nor comeliness:  and
we have seen him, and there was no sightliness, that we should be
desirous of him:

53:3. Despised, and the most abject of men, a man of sorrows, and
acquainted with infirmity:  and his look was as it were hidden and
despised, whereupon we esteemed him not.

53:4. Surely he hath borne our infirmities and carried our sorrows:  and
we have thought him as it were a leper, and as one struck by God and
afflicted.

53:5. But he was wounded for our iniquities, he was bruised for our
sins:  the chastisement of our peace was upon him, and by his bruises we
are healed.

53:6. All we like sheep have gone astray, every one hath turned aside
into his own way:  and the Lord hath laid on him the iniquity of us all.

53:7. He was offered because it was his own will, and he opened not his
mouth:  he shall be led as a sheep to the slaughter, and shall be dumb
as a lamb before his shearer, and he shall not open his mouth.

53:8. He was taken away from distress, and from judgment:  who shall
declare his generation?  because he is cut off out of the land of the
living:  for the wickedness of my people have I struck him.

53:9. And he shall give the ungodly for his burial, and the rich for
his death:  because he hath done no iniquity, neither was there deceit
in his mouth.

53:10. And the Lord was pleased to bruise him in infirmity:  if he shall
lay down his life for sin, he shall see a longlived seed, and the will
of the Lord shall be prosperous in his hand.

53:11. Because his soul hath laboured, he shall see and be filled:  by
his knowledge shall this my just servant justify many, and he shall
bear their iniquities.

53:12. Therefore will I distribute to him very many, and he shall
divide the spoils of the strong, because he hath delivered his soul
unto death, and was reputed with the wicked:  and he hath borne the sins
of many, and hath prayed for the transgressors.



Isaias Chapter 54


The Gentiles, who were barren before, shall multiply in the church of
Christ:  from which God's mercy shall never depart.

54:1. Give praise, O thou barren, that bearest not:  sing forth praise,
and make a joyful noise, thou that didst not travail with child:  for
many are the children of the desolate, more than of her that hath a
husband, saith the Lord.

54:2. Enlarge the place of thy tent, and stretch out the skins of thy
tabernacles, spare not:  lengthen thy cords, and strengthen thy stakes.

54:3. For thou shalt pass on to the right hand, and to the left:  and
thy seed shall inherit the Gentiles, and shall inhabit the desolate
cities.

54:4. Fear not, for thou shalt not be confounded, nor blush:  for thou
shalt not be put to shame, because thou shalt forget the shame of thy
youth, and shalt remember no more the reproach of thy widowhood.

54:5. For he that made thee shall rule over thee, the Lord of hosts is
his name:  and thy Redeemer, the Holy One of Israel, shall be called the
God of all the earth.

54:6. For the Lord hath called thee as a woman forsaken and mourning in
spirit, and as a wife cast off from her youth, said thy God.

54:7. For a small moment have I forsaken thee, but with great mercies
will I gather thee.

54:8. In a moment of indignation have I hid my face a little while from
thee, but with everlasting kindness have I had mercy on thee, said the
Lord thy Redeemer.

54:9. This thing is to me as in the days of Noe, to whom I swore, that
I would no more bring in the waters of Noe upon the earth:  so have I
sworn not to be angry with thee, and not to rebuke thee.

54:10. For the mountains shall be moved, and the hills shall tremble;
but my mercy shall not depart from thee, and the covenant of my peace
shall not be moved:  said the Lord that hath mercy on thee.

54:11. O poor little one, tossed with tempest, without all comfort,
behold I will lay thy stones in order, and will lay thy foundations
with sapphires,

54:12. And I will make thy bulwarks of jasper:  and thy gates of graven
stones, and all thy borders of desirable stones.

54:13. All thy children shall be taught of the Lord:  and great shall be
the peace of thy children.

54:14. And thou shalt be founded in justice:  depart far from
oppression, for thou shalt not fear; and from terror, for it shall not
come near thee.

54:15. Behold, an inhabitant shall come, who was not with me, he that
was a stranger to thee before, shall be joined to thee.

54:16. Behold, I have created the smith that bloweth the coals in the
fire, and bringeth forth an instrument for his work, and I have created
the killer to destroy.

54:17. No weapon that is formed against thee shall prosper:  and every
tongue that resisteth thee in judgment, thou shalt condemn.  This is the
inheritance of the servants of the Lord, and their justice with me,
saith the Lord.



Isaias Chapter 55


God promises abundance of spiritual graces to the faithful, that shall
believe in Christ out of all nations, and sincerely serve him.

55:1. All you that thirst, come to the waters:  and you that have no
money make haste, buy, and eat:  come ye, buy wine and milk without
money, and without any price.

55:2. Why do you spend money for that which is not bread, and your
labour for that which doth not satisfy you?  Hearken diligently to me,
and eat that which is good, and your soul shall be delighted in
fatness.

55:3. Incline your ear and come to me:  hear and your soul shall live,
and I will make an everlasting covenant with you, the faithful mercies
of David.

55:4. Behold I have given him for a witness to the people, for a leader
and a master to the Gentiles.

55:5. Behold thou shalt call a nation, which thou knewest not:  and the
nations that knew not thee shall run to thee, because of the Lord thy
God, and for the Holy One of Israel, for he hath glorified thee.

55:6. Seek ye the Lord, while he may be found:  call upon him, while he
is near.

55:7. Let the wicked forsake his way, and the unjust man his thoughts,
and let him return to the Lord, and he will have mercy on him, and to
our God:  for he is bountiful to forgive.

55:8. For my thoughts are not your thoughts:  nor your ways my ways,
saith the Lord.

55:9. For as the heavens are exalted above the earth, so are my ways
exalted above your ways, and my thoughts above your thoughts.

55:10. And as the rain and the snow come down from heaven, and return
no more thither, but soak the earth, and water it, and make it to
spring, and give seed to the sower, and bread to the eater:

55:11. So shall my word be, which shall go forth from my mouth:  it
shall not return to me void, but it shall do whatsoever I please, and
shall prosper in the things for which I sent it.

55:12. For you shall go out with joy, and be led forth with peace:  the
mountains and the hills shall sing praise before you, and all the trees
of the country shall clap their hands.

55:13. Instead of the shrub, shall come up the fir tree, and instead of
the nettle, shall come up the myrtle tree:  and the Lord shall be named
for an everlasting sign, that shall not be taken away.



Isaias Chapter 56


God invites all to keep his commandments:  the Gentiles that keep them
shall be the people of God:  the Jewish pastors are reproved.

56:1. Thus saith the Lord:  Keep ye judgment, and do justice:  for my
salvation is near to come, and my justice to be revealed.

56:2. Blessed is the man that doth this, and the son of man that shall
lay hold on this:  that keepeth the sabbath from profaning it, that
keepeth his hands from doing any evil.

56:3. And let not the son of the stranger, that adhereth to the Lord,
speak, saying:  The Lord will divide and separate me from his people.
And let not the eunuch say:  Behold I am a dry tree.

56:4. For thus saith the Lord to the eunuchs, They that shall keep my
sabbaths, and shall choose the things that please me, and shall hold
fast my covenant:

56:5. I will give to them in my house, and within my walls, a place,
and a name better than sons and daughters:  I will give them an
everlasting name which shall never perish.

56:6. And the children of the stranger that adhere to the Lord, to
worship him, and to love his name, to be his servants:  every one that
keepeth the sabbath from profaning it, and that holdeth fast my
covenant:

56:7. I will bring them into my holy mount, and will make them joyful
in my house of prayer:  their holocausts, and their victims shall please
me upon my altar:  for my house shall be called the house of prayer, for
all nations.

56:8. The Lord God, who gathereth the scattered of Israel, saith:  I
will still gather unto him his congregation.

56:9. All ye beasts of the field come to devour, all ye beasts of the
forest.

56:10. His watchmen are all blind, they are all ignorant:  dumb dogs not
able to bark, seeing vain things, sleeping and loving dreams.

56:11. And most impudent dogs, they never had enough:  the shepherds
themselves knew no understanding:  all have turned aside into their own
way, every one after his own gain, from the first even to the last.

56:12. Come, let us take wine, and be filled with drunkenness:  and it
shall be as to day, so also to morrow, and much more.



Isaias Chapter 57


The infidelity of the Jews:  their idolatry.  Promises to humble
penitents.

57:1. The just perisheth, and no man layeth it to heart, and men of
mercy are taken away, because there is none that understandeth; for the
just man is taken away from before the face of evil.

57:2. Let peace come, let him rest in his bed that hath walked in his
uprightness.

57:3. But draw near hither, you sons of the sorceress, the seed of the
adulterer, and of the harlot.

57:4. Upon whom have you jested?  upon whom have you opened your mouth
wide, and put out your tongue?  are not you wicked children, a false
seed,

57:5. Who seek your comfort in idols under every green tree,
sacrificing children in the torrents, under the high rocks?

57:6. In the parts of the torrent is thy portion, this is thy lot:  and
thou hast poured out libations to them, thou hast offered sacrifice.
Shall I not be angry at these things?

57:7. Upon a high and lofty mountain thou hast laid thy bed, and hast
gone up thither to offer victims.

57:8. And behind the door, and behind the post thou hast set up thy
remembrance:  for thou hast discovered thyself near me, and hast
received an adulterer:  thou hast enlarged thy bed, and made a covenant
with them:  thou hast loved their bed with open hand.

57:9. And thou hast adorned thyself for the king with ointment, and
hast multiplied thy perfumes.  Thou hast sent thy messengers far off,
and wast debased even to hell.

57:10. Thou hast been wearied in the multitude of thy ways:  yet thou
saidst not:  I will rest:  thou has found life of thy hand, therefore
thou hast not asked.

57:11. For whom hast thou been solicitous and afraid, that thou hast
lied, and hast not been mindful of me, nor thought on me in thy heart?
for I am silent, and as one that seeth not, and thou hast forgotten me.

57:12. I will declare thy justice, and thy works shall not profit thee.

57:13. When thou shalt cry, let thy companies deliver thee, but the
wind shall carry them all off, a breeze shall take them away, but he
that putteth his trust in me, shall inherit the land, and shall possess
my holy mount.

57:14. And I will say:  Make a way:  give free passage, turn out of the
path, take away the stumblingblocks out of the way of my people.

57:15. For thus saith the High and the Eminent that inhabiteth
eternity:  and his name is Holy, who dwelleth in the high and holy
place, and with a contrite and humble spirit, to revive the spirit of
the humble, and to revive the heart of the contrite.

57:16. For I will not contend for ever, neither will I be angry unto
the end:  because the spirit shall go forth from my face, and breathings
I will make.

57:17. For the iniquity of his covetousness I was angry, and I struck
him:  I hid my face from thee, and was angry:  and he went away wandering
in his own heart.

57:18. I saw his ways, and I healed him, and brought him back, and
restored comforts to him, and to them that mourn for him.

57:19. I created the fruit of the lips, peace, peace to him that is far
off, and to him that is near, said the Lord, and I healed him.

57:20. But the wicked are like the raging sea, which cannot rest, and
the waves thereof cast up dirt and mire.

57:21. There is no peace to the wicked, saith the Lord God.



Isaias Chapter 58


God rejects the hypocritical fasts of the Jews:  recommends works of
mercy, and sincere godliness.

58:1. Cry, cease not, lift up thy voice like a trumpet, and shew my
people their wicked doings, and the house of Jacob their sins.

58:2. For they seek me from day to day, and desire to know my ways, as
a nation that hath done justice, and hath not forsaken the judgment of
their God:  they ask of me the judgments of justice:  they are willing to
approach to God.

58:3. Why have we fasted, and thou hast not regarded:  have we humbled
our souls, and thou hast not taken notice?  Behold in the day of your
fast your own will is found, and you exact of all your debtors.

58:4. Behold you fast for debates and strife, and strike with the fist
wickedly.  Do not fast as you have done until this day, to make your cry
to be heard on high.

58:5. Is this such a fast as I have chosen:  for a man to afflict his
soul for a day?  is this it, to wind his head about like a circle, and
to spread sackcloth and ashes?  wilt thou call this a fast, and a day
acceptable to the Lord?

58:6. Is not this rather the fast that I have chosen?  loose the bands
of wickedness, undo the bundles that oppress, let them that are broken
go free, and break asunder every burden.

58:7. Deal thy bread to the hungry, and bring the needy and the
harbourless into thy house:  when thou shalt see one naked, cover him,
and despise not thy own flesh.

58:8. Then shall thy light break forth as the morning, and thy health
shall speedily arise, and thy justice shall go before thy face, and the
glory of the Lord shall gather thee up.

58:9. Then shalt thou call, and the Lord shall hear:  thou shalt cry,
and he shall say, Here I am.  If thou wilt take away the chain out of
the midst of thee, and cease to stretch out the finger, and to speak
that which profiteth not.

58:10. When thou shalt pour out thy soul to the hungry, and shalt
satisfy the afflicted soul, then shall thy light rise up in darkness,
and thy darkness shall be as the noonday.

58:11. And the Lord will give thee rest continually, and will fill thy
soul with brightness, and deliver thy bones, and thou shalt be like a
watered garden, and like a fountain of water whose waters shall not
fail.

58:12. And the places that have been desolate for ages shall be built
in thee:  thou shalt raise up the foundation of generation and
generation:  and thou shalt be called the repairer of the fences,
turning the paths into rest.

58:13. If thou turn away thy foot from the sabbath, from doing thy own
will in my holy day, and call the sabbath delightful, and the holy of
the Lord glorious, and glorify him, while thou dost not thy own ways,
and thy own will is not found, to speak a word:

58:14. Then shalt thou be delighted in the Lord, and I will lift thee
up above the high places of the earth, and will feed thee with the
inheritance of Jacob thy father.  For the mouth of the Lord hath spoken
it.



Isaias Chapter 59


The dreadful evil of sin is displayed, as the great obstacle to all
good from God:  yet he will send a Redeemer, and make an everlasting
covenant with his church.

59:1. Behold the hand of the Lord is not shortened that it cannot save,
neither is his ear heavy that it cannot hear.

59:2. But your iniquities have divided between you and your God, and
your sins have hid his face from you that he should not hear.

59:3. For your hands are defiled with blood, and your fingers with
iniquity:  your lips have spoken lies, and your tongue uttereth
iniquity.

59:4. There is none that calleth upon justice, neither is there any one
that judgeth truly:  but they trust in a mere nothing, and speak
vanities:  they have conceived labour, and brought forth iniquity.

59:5. They have broken the eggs of asps, and have woven the webs of
spiders:  he that shall eat of their eggs, shall die:  and that which is
brought out, shall be hatched into a basilisk.

59:6. Their webs shall not be for clothing, neither shall they cover
themselves with their works:  their works are unprofitable works, and
the work of iniquity is in their hands.

59:7. Their feet run to evil, and make haste to shed innocent blood:
their thoughts are unprofitable thoughts:  wasting and destruction are
in their ways.

59:8. They have not known the way of peace, and there is no judgment in
their steps:  their paths are become crooked to them, every one that
treadeth in them knoweth no peace.

59:9. Therefore is judgment far from us, and justice shall not overtake
us.  We looked for light, and behold darkness:  brightness, and we have
walked in the dark.

59:10. We have groped for the wall, and like the blind we have groped
as if we had no eyes:  we have stumbled at noonday as in darkness, we
are in dark places, as dead men.

59:11. We shall roar all of us like bears, and shall lament as mournful
doves.  We have looked for judgment, and there is none:  for salvation,
and it is far from us.

59:12. For our iniquities are multiplied before thee, and our sins have
testified against us:  for our wicked doings are with us, and have known
our iniquities:

59:13. In sinning and lying against the Lord:  and we have turned away
so that we went not after our God, but spoke calumny and transgression:
we have conceived, and uttered from the heart, words of falsehood.

59:14. And judgment is turned away backward, and justice hath stood far
off:  because truth hath fallen down in the street, and equity could not
come in.

59:15. And truth hath been forgotten:  and he that departed from evil,
lay open to be a prey:  and the Lord saw, and it appeared evil in his
eyes, because there is no judgment.

59:16. And he saw that there is not a man:  and he stood astonished,
because there is none to oppose himself:  and his own arm brought
salvation to him, and his own justice supported him.

59:17. He put on justice as a breastplate, and a helmet of salvation
upon his head:  he put on the garments of vengeance, and was clad with
zeal as with a cloak.

59:18. As unto revenge, as it were to repay wrath to his adversaries,
and a reward to his enemies:  he will repay the like to the islands.

59:19. And they from the west, shall fear the name of the Lord:  and
they from the rising of the sun, his glory when he shall come as a
violent stream, which the spirit of the Lord driveth on:

59:20. And there shall come a redeemer to Sion, and to them that return
from iniquity in Jacob, saith the Lord.

59:21. This is my covenant with them, saith the Lord:  My spirit that is
in thee, and my words that I have put in thy mouth, shall not depart
out of thy mouth, nor out of the mouth of thy seed, nor out of the
mouth of thy seed's seed, saith the Lord, from henceforth and for ever.

This is my covenant, etc. . .Note here a clear promise of perpetual
orthodoxy to the church of Christ.



Isaias Chapter 60


The light of true faith shall shine forth in the church of Christ, and
shall be spread through all nations, and continue for all ages.

60:1. Arise, be enlightened, O Jerusalem:  for thy light is come, and
the glory of the Lord is risen upon thee.

60:2. For behold darkness shall cover the earth, and a mist the people:
but the Lord shall arise upon thee, and his glory shall be seen upon
thee.

60:3. And the Gentiles shall walk in thy light, and kings in the
brightness of thy rising.

60:4. Lift up thy eyes round about, and see:  all these are gathered
together, they are come to thee:  thy sons shall come from afar, and thy
daughters shall rise up at thy side.

60:5. Then shalt thou see, and abound, and thy heart shall wonder and
be enlarged, when the multitude of the sea shall be converted to thee,
the strength of the Gentiles shall come to thee.

60:6. The multitude of camels shall cover thee, the dromedaries of
Madian and Epha:  all they from Saba shall come, bringing gold and
frankincense:  and shewing forth praise to the Lord.

60:7. All the flocks of Cedar shall be gathered together unto thee, the
rams of Nabaioth shall minister to thee:  they shall be offered upon my
acceptable altar, and I will glorify the house of my majesty.

60:8. Who are these, that fly as clouds, and as doves to their windows?

60:9. For, the islands wait for me, and the ships of the sea in the
beginning:  that I may bring thy sons from afar:  their silver, and their
gold with them, to the name of the Lord thy God, and to the Holy One of
Israel, because he hath glorified thee.

60:10. And the children of strangers shall build up thy walls, and
their kings shall minister to thee:  for in my wrath have I struck thee,
and in my reconciliation have I had mercy upon thee.

60:11. And thy gates shall be open continually:  they shall not be shut
day nor night, that the strength of the Gentiles may be brought to
thee, and their kings may be brought.

60:12. For the nation and the kingdom that will not serve thee, shall
perish:  and the Gentiles shall be wasted with desolation.

60:13. The glory of Libanus shall come to thee, the fir tree, and the
box tree, and the pine tree together, to beautify the place of my
sanctuary:  and I will glorify the place of my feet.

60:14. And the children of them that afflict thee, shall come bowing
down to thee, and all that slandered thee shall worship the steps of
thy feet, and shall call thee the city of the Lord, the Sion of the
Holy One of Israel.

60:15. Because thou wast forsaken, and hated, and there was none that
passed through thee, I will make thee to be an everlasting glory, a joy
unto generation and generation:

60:16. And thou shalt suck the milk of the Gentiles, and thou shalt be
nursed with the breasts of kings:  and thou shalt know that I am the
Lord thy Saviour, and thy Redeemer, the Mighty One of Jacob.

60:17. For brass I will bring gold, and for iron I will bring silver:
and for wood brass, and for stones iron:  and I will make thy visitation
peace, and thy overseers justice.

60:18. Iniquity shall no more be heard in thy land, wasting nor
destruction in thy borders, and salvation shall possess thy walls, and
praise thy gates.

60:19. Thou shalt no more have the sun for thy light by day, neither
shall the brightness of the moon enlighten thee:  but the Lord shall be
unto thee for an everlasting light, and thy God for thy glory.

Thou shalt no more, etc. . .In this latter part of the chapter, the
prophet passes from the illustrious promises made to the church
militant on earth, to the glory of the church triumphant in heaven.

60:20. Thy sun shall go down no more, and thy moon shall not decrease:
for the Lord shall be unto thee for an everlasting light, and the days
of thy mourning shall be ended.

60:21. And thy people shall be all just, they shall inherit the land
for ever, the branch of my planting, the work of my hand to glorify me.

60:22. The least shall become a thousand, and a little one a most
strong nation:  I the Lord will suddenly do this thing in its time.



Isaias Chapter 61


The office of Christ:  the mission of the Apostles; the happiness of
their converts.

61:1. The spirit of the Lord is upon me, because the Lord hath anointed
me:  he hath sent me to preach to the meek, to heal the contrite of
heart, and to preach a release to the captives, and deliverance to them
that are shut up.

61:2. To proclaim the acceptable year of the Lord, and the day of
vengeance of our God:  to comfort all that mourn:

61:3. To appoint to the mourners of Sion, and to give them a crown for
ashes, the oil of joy for mourning, a garment of praise for the spirit
of grief:  and they shall be called in it the mighty ones of justice,
the planting of the Lord to glorify him.

61:4. And they shall build the places that have been waste from of old,
and shall raise up ancient ruins, and shall repair the desolate cities,
that were destroyed for generation and generation.

61:5. And strangers shall stand and shall feed your flocks:  and the
sons of strangers shall be your husbandman, and the dressers of your
vines.

61:6. But you shall be called the priests of the Lord:  to you it shall
be said:  Ye ministers of our God:  you shall eat the riches of the
Gentiles, and you shall pride yourselves in their glory.

61:7. For your double confusion and shame, they shall praise their
part:  therefore shall they receive double in their land, everlasting
joy shall be unto them.

61:8. For I am the Lord that love judgment, and hate robbery in a
holocaust:  and I will make their work in truth, and I will make a
perpetual covenant with them.

61:9. And they shall know their seed among the Gentiles, and their
offspring in the midst of peoples:  all that shall see them, shall know
them, that these are the seed which the Lord hath blessed.

61:10. I will greatly rejoice in the Lord, and my soul shall be joyful
in my God:  for he hath clothed me with the garments of salvation:  and
with the robe of justice he hath covered me, as a bridegroom decked
with a crown, and as a bride adorned with her jewels.

61:11. For as the earth bringeth forth her bud, and as the garden
causeth her seed to shoot forth:  so shall the Lord God make justice to
spring forth, and praise before all the nations.



Isaias Chapter 62


The prophet will not cease from preaching Christ:  to whom all nations
shall be converted:  and whose church shall continue for ever.

62:1. For Sion's sake I will not hold my peace, and for the sake of
Jerusalem, I will not rest till her just one come forth as brightness,
and her saviour be lighted as a lamp.

62:2. And the Gentiles shall see thy just one, and all kings thy
glorious one:  and thou shalt be called by a new name, which the mouth
of the Lord shall name.

62:3. And thou shalt be a crown of glory in the hand of the Lord, and a
royal diadem in the hand of thy God.

62:4. Thou shalt no more be called Forsaken:  and thy land shall no more
be called Desolate:  but thou shalt be called My pleasure in her, and
thy land inhabited.  Because the Lord hath been well pleased with thee:
and thy land shall be inhabited.

62:5. For the young man shall dwell with the virgin, and thy children
shall dwell in thee.  And the bridegroom shall rejoice over the bride,
and thy God shall rejoice over thee.

62:6. Upon thy walls, O Jerusalem, I have appointed watchmen all the
day, and all the night, they shall never hold their peace.  You that are
mindful of the Lord, hold not your peace,

62:7. And give him no silence till he establish, and till he make
Jerusalem a praise in the earth.

62:8. The Lord hath sworn by his right hand, and by the arm of his
strength:  Surely I will no more give thy corn to be meat for thy
enemies:  and the sons of the strangers shall not drink thy wine, for
which thou hast laboured.

62:9. For they that gather it, shall eat it, and shall praise the Lord:
and they that bring it together, shall drink it in my holy courts.

62:10. Go through, go through the gates, prepare the way for the
people, make the road plain, pick out the stones, and lift up the
standard to the people.

62:11. Behold the Lord hath made it to be heard in the ends of the
earth, tell the daughter of Sion:  Behold thy Saviour cometh:  behold his
reward is with him, and his work before him.

62:12. And they shall call them, The holy people, the redeemed of the
Lord.  But thou shalt be called:  A city sought after, and not forsaken.



Isaias Chapter 63


Christ's victory over his enemies:  his mercies to his people:  their
complaint.

63:1. Who is this that cometh from Edom, with dyed garments from Bosra,
this beautiful one in his robe, walking in the greatness of his
strength.  I, that speak justice, and am a defender to save.

Edom. . .Edom and Bosra (a strong city of Edom) are here taken in a
mystical sense for the enemies of Christ and his church.

63:2. Why then is thy apparel red, and thy garments like theirs that
tread in the winepress?

63:3. I have trodden the winepress alone, and of the Gentiles there is
not a man with me:  I have trampled on them in my indignation, and have
trodden them down in my wrath, and their blood is sprinkled upon my
garments, and I have stained all my apparel.

63:4. For the day of vengeance is in my heart, the year of my
redemption is come.

63:5. I looked about, and there was none to help:  I sought, and there
was none to give aid:  and my own arm hath saved for me, and my
indignation itself hath helped me.

63:6. And I have trodden down the people in my wrath, and have made
them drunk in my indignation, and have brought down their strength to
the earth.

63:7. I will remember the tender mercies of the Lord, the praise of the
Lord for all the things that the Lord hath bestowed upon us, and for
the multitude of his good things to the house of Israel, which he hath
given them according to his kindness, and according to the multitude of
his mercies.

63:8. And he said:  Surely they are my people, children that will not
deny:  so he became their saviour.

63:9. In all their affliction he was not troubled, and the angel of his
presence saved them:  in his love, and in his mercy he redeemed them,
and he carried them and lifted them up all the days of old.

63:10. But they provoked to wrath, and afflicted the spirit of his Holy
One:  and he was turned to be their enemy, and he fought against them.

63:11. And he remembered the days of old of Moses, and of his people:
Where is he that brought them up out of the sea, with the shepherds of
his flock?  where is he that put in the midst of them the spirit of his
Holy One?

63:12. He that brought out Moses by the right hand, by the arm of his
majesty:  that divided the waters before them, to make himself an
everlasting name.

63:13. He that led them out through the deep, as a horse in the
wilderness that stumbleth not.

63:14. As a beast that goeth down in the field, the spirit of the Lord
was their leader:  so didst thou lead thy people to make thyself a
glorious name.

63:15. Look down from heaven, and behold from thy holy habitation and
the place of thy glory:  where is thy zeal, and thy strength, the
multitude of thy bowels, and of thy mercies?  they have held back
themselves from me.

They have held back, etc. . .This is spoken by the prophet in the person
of the Jews at the time when, for their sins, they were given up to
their enemies.

63:16. For thou art our father, and Abraham hath not known us, and
Israel hath been ignorant of us:  thou, O Lord, art our father, our
redeemer, from everlasting is thy name.

Abraham hath not know us, etc. . .That is, Abraham will not now
acknowledge us for his children, by reason of our degeneracy; but thou,
O Lord, art our true father and our redeemer, and no other can be
called our parent in comparison with thee.

63:17. Why hast thou made us to err, O Lord, from thy ways:  why hast
thou hardened our heart, that we should not fear thee?  return for the
sake of thy servants, the tribes of thy inheritance.

Made us to err, etc.  Hardened our heart, etc. . .The meaning is, that
God in punishment of their great and manifold crimes, and their long
abuse of his mercy and grace, had withdrawn his graces from them, and
so given them up to error and hardness of heart.

63:18. They have possessed thy holy people as nothing:  our enemies have
trodden down thy sanctuary.

63:19. We are become as in the beginning, when thou didst not rule over
us, and when we were not called by thy name.



Isaias Chapter 64


The prophet prays for the release of his people; and for the remission
of their sins.

64:1. O that thou wouldst rend the heavens, and wouldst come down:  the
mountains would melt away at thy presence.

64:2. They would melt as at the burning of fire, the waters would burn
with fire, that thy name might be made known to thy enemies:  that the
nations might tremble at thy presence.

64:3. When thou shalt do wonderful things, we shall not bear them:  thou
didst come down, and at thy presence the mountains melted away.

64:4. From the beginning of the world they have not heard, nor
perceived with the ears:  the eye hath not seen, O God, besides thee,
what things thou hast prepared for them that wait for thee.

64:5. Thou hast met him that rejoiceth, and doth justice:  in thy ways
they shall remember thee:  behold thou art angry, and we have sinned:  in
them we have been always, and we shall be saved.

64:6. And we are all become as one unclean, and all our justices as the
rag of a menstruous woman:  and we have all fallen as a leaf, and our
iniquities, like the wind, have taken us away.

Our justices, etc. . .That is, the works by which we pretended to make
ourselves just.  This is spoken particularly of the sacrifices,
sacraments, and ceremonies of the Jews, after the death of Christ, and
the promulgation of the new law.

64:7. There is none that calleth upon thy name:  that riseth up, and
taketh hold of thee:  thou hast hid thy face from us, and hast crushed
us in the hand of our iniquity.

64:8. And now, O Lord, thou art our father, and we are clay:  and thou
art our maker, and we all are the works of thy hands.

64:9. Be not very angry, O Lord, and remember no longer our iniquity:
behold, see we are all thy people.

64:10. The city of thy sanctuary is become a desert, Sion is made a
desert, Jerusalem is desolate.

64:11. The house of our holiness, and of our glory, where our fathers
praised thee, is burnt with fire, and all our lovely things are turned
into ruins.

64:12. Wilt thou refrain thyself, O Lord, upon these things, wilt thou
hold thy peace, and afflict us vehemently?



Isaias Chapter 65


The Gentiles shall seek and find Christ, but the Jews will persecute
him, and be rejected, only a remnant shall be reserved.  The church
shall multiply, and abound with graces.

65:1. They have sought me that before asked not for me, they have found
me that sought me not.  I said:  Behold me, behold me, to a nation that
did not call upon my name.

65:2. I have spread forth my hands all the day to an unbelieving
people, who walk in a way that is not good after their own thoughts.

65:3. A people that continually provoke me to anger before my face,
that immolate in gardens, and sacrifice upon bricks.

65:4. That dwell in sepulchres, and sleep in the temple of idols:  that
eat swine's flesh, and profane broth is in their vessels.

65:5. That say:  Depart from me, come not near me, because thou art
unclean:  these shall be smoke in my anger, a fire burning all the day.

65:6. Behold it is written before me:  I will not be silent, but I will
render and repay into their bosom.

65:7. Your iniquities, and the iniquities of your fathers together,
saith the Lord, who have sacrificed upon the mountains, and have
reproached me upon the hills; and I will measure back their first work
in their bosom.

65:8. Thus saith the Lord:  As if a grain be found in a cluster, and it
be said:  Destroy it not, because it is a blessing:  so will I do for the
sake of my servants, that I may not destroy the whole.

65:9. And I will bring forth a seed out of Jacob, and out of Juda a
possessor of my mountains:  and my elect shall inherit it, and my
servants shall dwell there.

65:10. And the plains shall be turned to folds of flocks, and the
valley of Achor into a place for the herds to lie down in, for my
people that have sought me.

65:11. And you, that have forsaken the Lord, that have forgotten my
holy mount, that set a table for fortune, and offer libations upon it,

65:12. I will number you in the sword, and you shall all fall by
slaughter:  because I called and you did not answer:  I spoke, and you
did not hear:  and you did evil in my eyes, and you have chosen the
things that displease me.

65:13. Therefore thus saith the Lord God:  Behold my servants shall eat,
and you shall be hungry:  behold my servants shall drink, and you shall
be thirsty.

65:14. Behold my servants shall rejoice, and you shall be confounded:
behold my servants shall praise for joyfulness of heart, and you shall
cry for sorrow of heart, and shall howl for grief of spirit.

65:15. And you shall leave your name for an execration to my elect:  and
the Lord God shall slay thee, and call his servants by another name.

65:16. In which he that is blessed upon the earth, shall be blessed in
God, amen:  and he that sweareth in the earth, shall swear by God, amen:
because the former distresses are forgotten, and because they are hid
from my eyes.

65:17. For behold I create new heavens, and a new earth:  and the former
things shall not be in remembrance, and they shall not come upon the
heart.

65:18. But you shall be glad and rejoice for ever in these things,
which I create:  for behold I create Jerusalem a rejoicing, and the
people thereof joy.

65:19. And I will rejoice in Jerusalem, and joy in my people, and the
voice of weeping shall no more be heard in her, nor the voice of
crying.

65:20. There shall no more be an infant of days there, nor an old man
that shall not fill up his days:  for the child shall die a hundred
years old, and the sinner being a hundred years old shall be accursed.

65:21. And they shall build houses, and inhabit them; and they shall
plant vineyards, and eat the fruits of them.

65:22. They shall not build, and another inhabit; they shall not plant,
and another eat:  for as the days of a tree, so shall be the days of my
people, and the works of their hands shall be of long continuance.

65:23. My elect shall not labour in vain, nor bring forth in trouble;
for they are the seed of the blessed of the Lord, and their posterity
with them.

65:24. And it shall come to pass, that before they call, I will hear;
as they are yet speaking, I will hear.

65:25. The wolf and the lamb shall feed together; the lion and the ox
shall eat straw; and dust shall be the serpent's food:  they shall not
hurt nor kill in all my holy mountain, saith the Lord.



Isaias Chapter 66


More of the reprobation of the Jews, and of the call of the Gentiles.

66:1. Thus saith the Lord:  Heaven is my throne, and the earth my
footstool:  what is this house that you will build to me?  and what is
this place of my rest?

What is this house, etc. . .This is a prophecy that the temple should be
cast off.

66:2. My hand made all these things, and all these things were made,
saith the Lord.  But to whom shall I have respect, but to him that is
poor and little, and of a contrite spirit, and that trembleth at my
words?

66:3. He that sacrificeth an ox, is as if he slew a man:  he that
killeth a sheep in sacrifice, as if he should brain a dog:  he that
offereth an oblation, as if he should offer swine's blood; he that
remembereth incense, as if he should bless an idol.  All these things
have they chosen in their ways, and their soul is delighted in their
abominations.

He that sacrificeth an ox, etc. . .This is a prophecy that the
sacrifices which were offered in the old law should be abolished in the
new; and that the offering of them should be a crime.--Ibid.
Remembereth incense. . .Viz., to offer it in the way of a sacrifice.

66:4. Wherefore I also will choose their mockeries, and will bring upon
them the things they feared:  because I called, and there was none that
would answer; I have spoken, and they heard not; and they have done
evil in my eyes, and have chosen the things that displease me.

I will choose their mockeries. . .I will turn their mockeries upon
themselves; and will cause them to be mocked by their enemies.

66:5. Hear the word of the Lord, you that tremble at his word:  Your
brethren that hate you, and cast you out for my name's sake, have said:
Let the Lord be glorified, and we shall see in your joy:  but they shall
be confounded.

66:6. A voice of the people from the city, a voice from the temple, the
voice of the Lord that rendereth recompense to his enemies.

66:7. Before she was in labour, she brought forth; before her time came
to be delivered, she brought forth a man child.

Before she was in labour, etc. . .This relates to the conversion of the
Gentiles, who were born, as it were, all on a sudden to the church of
God.

66:8. Who hath ever heard such a thing?  and who hath seen the like to
this?  shall the earth bring forth in one day?  or shall a nation be
brought forth at once, because Sion hath been in labour, and hath
brought forth her children?

66:9. Shall not I that make others to bring forth children, myself
bring forth, saith the Lord?  shall I, that give generation to others,
be barren, saith the Lord thy God?

66:10. Rejoice with Jerusalem, and be glad with her, all you that love
her:  rejoice for joy with her, all you that mourn for her.

66:11. That you may suck, and be filled with the breasts of her
consolations:  that you may milk out, and flow with delights, from the
abundance of her glory.

66:12. For thus saith the Lord:  Behold I will bring upon her as it were
a river of peace, and as an overflowing torrent the glory of the
Gentiles, which you shall suck; you shall be carried at the breasts,
and upon the knees they shall caress you.

66:13. As one whom the mother caresseth, so will I comfort you, and you
shall be comforted in Jerusalem.

66:14. You shall see and your heart shall rejoice, and your bones shall
flourish like an herb, and the hand of the Lord shall be known to his
servants, and he shall be angry with his enemies.

66:15. For behold the Lord will come with fire, and his chariots are
like a whirlwind, to render his wrath in indignation, and his rebuke
with flames of fire.

66:16. For the Lord shall judge by fire, and by his sword unto all
flesh, and the slain of the Lord shall be many.

66:17. They that were sanctified, thought themselves clean in the
gardens behind the gate within, they that did eat swine's flesh, and
the abomination, and the mouse:  they shall be consumed together, saith
the Lord.

66:18. But I know their works, and their thoughts:  I come that I may
gather them together with all nations and tongues:  and they shall come
and shall see my glory.

66:19. And I will set a sign among them, and I will send of them that
shall be saved, to the Gentiles into the sea, into Africa, and Lydia
them that draw the bow:  into Italy, and Greece, to the islands afar
off, to them that have not heard of me, and have not seen my glory.  And
they shall declare my glory to the Gentiles:

66:20. And they shall bring all your brethren out of all nations for a
gift to the Lord, upon horses, and in chariots, and in litters, and on
mules, and in coaches, to my holy mountain Jerusalem, saith the Lord,
as if the children of Israel should bring an offering in a clean vessel
into the house of the Lord.

66:21. And I will take of them to be priests, and Levites, saith the
Lord.

66:22. For as the new heavens, and the new earth, which I will make to
stand before me, saith the Lord:  so shall your seed stand, and your
name.

66:23. And there shall be month after month, and sabbath after sabbath:
and all flesh shall come to adore before my face, saith the Lord.

66:24. And they shall go out, and see the carcasses of the men that
have transgressed against me:  their worm shall not die, and their fire
shall not be quenched:  and they shall be a loathsome sight to all
flesh.




THE PROPHECY OF JEREMIAS



Jeremias was a priest, a native of Anathoth, a priestly city in the
tribe of Benjamin:  and was sanctified from his mother's womb, to be a
prophet of God; which office he began to execute when he was yet a
child in age.  He was in his whole life, according to the signification
of his name, Great before the Lord; and a special figure of Jesus
Christ, in the persecutions he underwent for discharging his duty; in
his charity for his persecutors; and in the violent death he suffered
at their hands:  it being an ancient tradition of the Hebrews, that he
was stoned to death by the remnant of the Jews who had retired into
Egypt.



Jeremias Chapter 1


The time, and the calling, of Jeremias:  his prophetical visions.  God
encourages him.

1:1. The words of Jeremias the son of Helcias, of the priests that were
in Anathoth, in the land of Benjamin.

1:2. The word of the Lord which came to him in the days of Josias the
son of Amon king of Juda, in the thirteenth year of his reign.

1:3. And which came to him in the days of Joakim the son of Josias king
of Juda, unto the end of the eleventh year of Sedecias the son of
Josias king of Juda, even unto the carrying away of Jerusalem captive,
in the fifth month.

1:4. And the word of the Lord came to me, saying:

1:5. Before I formed thee in the bowels of thy mother, I knew thee:  and
before thou camest forth out of the womb, I sanctified thee, and made
thee a prophet unto the nations.

1:6. And I said:  Ah, ah, ah, Lord God:  behold, I cannot speak, for I am
a child.

1:7. And the Lord said to me:  Say not:  I am a child:  for thou shalt go
to all that I shall send thee:  and whatsoever I shall command thee,
thou shalt speak.

1:8. Be not afraid at their presence:  for I am with thee to deliver
thee, saith the Lord.

1:9. And the Lord put forth his hand, and touched my mouth:  and the
Lord said to me:  Behold I have given my words in thy mouth:

1:10. Lo, I have set thee this day over the nations, and over kingdoms,
to root up, and to pull down, and to waste, and to destroy, and to
build, and to plant.

1:11. And the word of the Lord came to me, saying:  What seest thou,
Jeremias?  And I said:  I see a rod watching.

1:12. And the Lord said to me:  Thou hast seen well:  for I will watch
over my word to perform it.

1:13. And the word of the Lord came to me a second time saying:  What
seest thou?  And I said:  I see a boiling caldron, and the face thereof
from the face of the north.

1:14. And the Lord said to me:  From the north shall an evil break forth
upon all the inhabitants of the land.

1:15. For behold I will call together all the families of the kingdoms
of the north, saith the Lord:  and they shall come, and shall set every
one his throne in the entrance of the gates of Jerusalem, and upon all
the walls thereof round about, and upon all the cities of Juda.

1:16. And I will pronounce my judgments against them, touching all
their wickedness, who have forsaken me, and have sacrificed to strange
gods, and have adored the work of their own hands.

1:17. Thou therefore gird up thy loins, and arise, and speak to them
all that I command thee.  Be not afraid at their presence:  for I will
make thee not to fear their countenance.

1:18. For behold I have made thee this day a fortified city, and a
pillar of iron, and a wall of brass, over all the land, to the kings of
Juda, to the princes thereof, and to the priests, and to the people of
the land.

1:19. And they shall fight against them, and shall not prevail:  for I
am with thee, saith the Lord, to deliver thee.



Jeremias Chapter 2


God expostulates with the Jews for their ingratitude and infidelity.

2:1. And the word of the Lord came to me, saying:

2:2. Go, and cry in the ears of Jerusalem, saying:  Thus saith the Lord:
I have remembered thee, pitying thy youth, and the love of thy
espousals, when thou followedst me in the desert, in a land that is not
sown.

2:3. Israel is holy to the Lord, the firstfruits of his increase:  all
they that devour him offend:  evils shall come upon them, saith the
Lord.

2:4. Hear ye the word of the Lord, O house of Jacob, and all ye
families of the house of Israel:

2:5. Thus saith the Lord:  What iniquity have your fathers found in me,
that they are gone far from me, and have walked after vanity, and are
become vain?

2:6. And they have not said:  Where is the Lord, that made us come up
out of the land of Egypt?  that led us through the desert, through a
land uninhabited and unpassable, through a land of drought, and the
image of death, through a land wherein no man walked, nor any man
dwelt?

2:7. And I brought you into the land of Carmel, to eat the fruit
thereof, and the best things thereof:  and when ye entered in, you
defiled my land and made my inheritance an abomination.

Carmel. . .That is, a fruitful, plentiful land.

2:8. The priests did not say:  Where is the Lord?  and they that held the
law knew me not, and the pastors transgressed against me:  and the
prophets prophesied in Baal, and followed idols.

2:9. Therefore will I yet contend in judgment with you, saith the Lord,
and I will plead with your children.

2:10. Pass over to the isles of Cethim, and see:  and send into Cedar,
and consider diligently:  and see if there hath been done any thing like
this.

2:11. If a nation hath changed their gods, and indeed they are not
gods:  but my people have changed their glory into an idol.

2:12. Be astonished, O ye heavens, at this, and ye gates thereof, be
very desolate, saith the Lord.

2:13. For my people have done two evils.  They have forsaken me, the
fountain of living water, and have digged to themselves cisterns,
broken cisterns, that can hold no water.

2:14. Is Israel a bondman, or a homeborn slave?  why then is he become a
prey?

2:15. The lions have roared upon him, and have made a noise, they have
made his land a wilderness:  his cities are burnt down, and there is
none to dwell in them.

2:16. The children also of Memphis, and of Taphnes have defloured thee,
even to the crown of the head.

2:17. Hath not this been done to thee, because thou hast forsaken the
Lord thy God at that time, when he led thee by the way?

2:18. And now what hast thou to do in the way of Egypt, to drink the
troubled water?  And what hast thou to do with the way of the Assyrians,
to drink the water of the river?

2:19. Thy own wickedness shall reprove thee, and thy apostasy shall
rebuke thee.  Know thou, and see that it is an evil and a bitter thing
for thee, to have left the Lord thy God, and that my fear is not with
thee, saith the Lord the God of hosts.

2:20. Of old time thou hast broken my yoke, thou hast burst my bands,
and thou saidst:  I will not serve.  For on every high hill, and under
every green tree thou didst prostitute thyself.

2:21. Yet, I planted thee a chosen vineyard, all true seed:  how then
art thou turned unto me into that which is good for nothing, O strange
vineyard?

2:22. Though thou wash thyself with nitre, and multiply to thyself the
herb borith, thou art stained in thy iniquity before me, saith the Lord
God.

Borith. . .An herb used to clean clothes, and take out spots and dirt.

2:23. How canst thou say:  I am not polluted, I have not walked after
Baalim?  see thy ways in the valley, know what thou hast done:  as a
swift runner pursuing his course.

2:24. A wild ass accustomed to the wilderness in the desire of his
heart, snuffed up the wind of his love:  none shall turn her away:  all
that seek her shall not fail:  in her monthly filth they shall find her.

2:25. Keep thy foot from being bare, and thy throat from thirst.  But
thou saidst:  I have lost all hope, I will not do it:  for I have loved
strangers, and I will walk after them.

2:26. As the thief is confounded when he is taken, so is the house of
Israel confounded, they and their kings, their princes and their
priests, and their prophets.

2:27. Saying to a stock:  Thou art my father:  and to a stone:  Thou hast
begotten me:  they have turned their back to me, and not their face:  and
in the time of their affliction they will say:  Arise, and deliver us.

2:28. Where are the gods, whom thou hast made thee?  let them arise and
deliver thee in the time of thy affliction:  for according to the number
of thy cities were thy gods, O Juda.

2:29. Why will you contend with me in judgment?  you have all forsaken
me, saith the Lord.

2:30. In vain have I struck your children, they have not received
correction:  your sword hath devoured your prophets, your generation is
like a ravaging lion.

2:31. See ye the word of the Lord:  Am I become a wilderness to Israel,
or a lateward springing land?  why then have my people said:  We are
revolted, we will come to thee no more?

2:32. Will a virgin forget her ornament, or a bride her stomacher?  but
my people hath forgotten me days without number.

2:33. Why dost thou endeavour to shew thy way good to seek my love,
thou who hast also taught thy malices to be thy ways,

2:34. And in thy skirts is found the blood of the souls of the poor and
innocent?  not in ditches have I found them, but in all places, which I
mentioned before.

2:35. And thou hast said:  I am without sin and am innocent:  and
therefore let thy anger be turned away from me.  Behold, I will contend
with thee in judgment, because thou hast said:  I have not sinned.

2:36. How exceeding base art thou become, going the same ways over
again! and thou shalt be ashamed of Egypt, as thou wast ashamed of
Assyria.

2:37. For from thence thou shalt go, and thy hand shall be upon thy
head:  for the Lord hath destroyed thy trust, and thou shalt have
nothing prosperous therein.



Jeremias Chapter 3


God invites the rebel Jews to return to him, with a promise to receive
them:  he foretells the conversion of the Gentiles.

3:1. It is commonly said:  If a man put away his wife, and she go from
him, and marry another man, shall he return to her any more?  shall not
that woman be polluted, and defiled?  but thou hast prostituted thyself
to many lovers:  nevertheless return to me, saith the Lord, and I will
receive thee.

3:2. Lift up thy eyes on high:  and see where thou hast not prostituted
thyself:  thou didst sit in the ways, waiting for them as a robber in
the wilderness:  and thou hast polluted the land with thy fornications,
and with thy wickedness.

3:3. Therefore the showers were withholden, and there was no lateward
rain:  thou hadst a harlot's forehead, thou wouldst not blush.

3:4. Therefore at the least from this time call to me:  Thou art my
father, the guide of my virginity:

3:5. Wilt thou be angry for ever, or wilt thou continue unto the end?
Behold, thou hast spoken, and hast done evil things, and hast been
able.

3:6. And the Lord said to me in the days of king Josias:  Hast thou seen
what rebellious Israel hath done?  she hath gone of herself upon every
high mountain, and under every green tree, and hath played the harlot
there.

3:7. And when she had done all these things, I said:  Return to me, and
she did not return.  And her treacherous sister Juda saw,

3:8. That because the rebellious Israel had played the harlot, I had
put her away, and given her a bill of divorce:  yet her treacherous
sister Juda was not afraid, but went and played the harlot also
herself.

3:9. And by the facility of her fornication she defiled the land, and
played the harlot with stones and with stocks.

3:10. And after all this, her treacherous sister Juda hath not returned
to me with her whole heart, but with falsehood, saith the Lord.

3:11. And the Lord said to me:  The rebellious Israel hath justified her
soul, in comparison of the treacherous Juda.

3:12. Go, and proclaim these words towards the north, and thou shalt
say:  Return, O rebellious Israel, saith the Lord, and I will not turn
away my face from you:  for I am holy, saith the Lord, and I will not be
angry for ever.

3:13. But yet acknowledge thy iniquity, that thou hast transgressed
against the Lord thy God:  and thou hast scattered thy ways to strangers
under every green tree, and hast not heard my voice, saith the Lord.

3:14. Return, O ye revolting children, saith the Lord:  for I am your I
husband:  and I will take you, one of a city, and two of a kindred, and
will bring you into Sion.

3:15. And I will give you pastors according to my own heart, and they
shall feed you with knowledge and doctrine.

3:16. And when you shall be multiplied, and increase in the land in
those days, saith the Lord, they shall say no more:  The ark of the
covenant of the Lord:  neither shall it come upon the heart, neither
shall they remember it, neither shall it be visited, neither shall that
be done any more.

3:17. At that time Jerusalem shall be called the throne of the Lord:
and all the nations shall be gathered together to it, in the name of
the Lord to Jerusalem, and they shall not walk after the perversity of
their most wicked heart.

3:18. In those days the house of Juda shall go to the house of Israel,
and they shall come together out of the land of the north to the land
which I gave to your fathers.

3:19. But I said:  How shall I put thee among the children, and give
thee a lovely land, the goodly inheritance of the armies of the
Gentiles?  And I said:  Thou shalt call me father and shalt not cease to
walk after me.

3:20. But as a woman that despiseth her lover, so hath the house of
Israel despised me, saith the Lord.

3:21. A voice was heard in the highways, weeping and howling of the
children of Israel:  because they have made their way wicked, they have
forgotten the Lord their God.

3:22. Return, you rebellious children, and I will heal your rebellions.
Behold we come to thee:  for thou art the Lord our God.

3:23. In very deed the hills were liars, and the multitude of the
mountains:  truly in the Lord our God is the salvation of Israel.

3:24. Confusion hath devoured the labour of our fathers from our youth,
their flocks and their herds, their sons and their daughters.

3:25. We shall sleep in our confusion, and our shame shall cover us,
because we have sinned against the Lord our God, we and our fathers
from our youth even to this day, and we have not hearkened to the voice
of the Lord our God.



Jeremias Chapter 4


And admonition to sincere repentance, and circumcision of the heart,
with threats of grievous punishment to those that persist in sin.

4:1. If thou wilt return, O Israel, saith the Lord, return to me:  if
thou wilt take away thy stumblingblocks out of my sight, thou shalt not
be moved.

4:2. And thou shalt swear:  As the Lord liveth, in truth, and in
judgment, and in justice:  and the Gentiles shall bless him, and shall
praise him.

4:3. For thus saith the Lord to the men of Juda and Jerusalem:  Break up
anew your fallow ground, and sow not upon thorns:

4:4. Be circumcised to the Lord, and take away the foreskins of your
hearts, ye men of Juda, and ye inhabitants of Jerusalem:  lest my
indignation come forth like fire, and burn, and there be none that can
quench it because of the wickedness of your thoughts.

4:5. Declare ye in Juda, and make it heard in Jerusalem:  speak, and
sound with the trumpet in the land:  cry aloud, and say:  Assemble
yourselves, and let us go into strong cities.

4:6. Set up the standard in Sion.  Strengthen yourselves, stay not:  for
I bring evil from the north, and great destruction.

4:7. The lion is come up out of his den, and the robber of nations hath
roused himself:  he is come forth out of his place, to make thy land
desolate:  thy cities shall be laid waste, remaining without an
inhabitant.

4:8. For this gird yourselves with haircloth, lament and howl:  for the
fierce anger of the Lord is not turned away from us.

4:9. And it shall come to pass in that day, saith the Lord:  That the
heart of the king shall perish, and the heart of the princes:  and the
priests shall be astonished, and the prophets shall be amazed.

4:10. And I said:  Alas, alas, alas, O Lord God, hast thou then deceived
this people and Jerusalem, saying:  You shall have peace:  and behold the
sword reacheth even to the soul?

4:11. At that time it shall be said to this people, and to Jerusalem:  A
burning wind is in the ways that are in the desert of the way of the
daughter of my people, not to fan, nor to cleanse.

4:12. A full wind from these places shall come to me:  and now I will
speak my judgments with them.

4:13. Behold he shall come up as a cloud, and his chariots as a
tempest:  his horses are swifter than eagles:  woe unto us, for we are
laid waste.

4:14. Wash thy heart from wickedness, O Jerusalem, that thou mayst be
saved:  how long shall hurtful thoughts abide in thee?

4:15. For a voice of one declaring from Dan, and giving notice of the
idol from mount Ephraim.

4:16. Say ye to the nations:  Behold it is heard in Jerusalem, that
guards are coming from a far country, and give out their voice against
the cities of Juda.

4:17. They are set round about her, as keepers of fields:  because she
hath provoked me to wrath, saith the Lord.

4:18. Thy ways, and thy devices have brought these things upon thee:
this is thy wickedness, because it is bitter, because it hath touched
thy heart.

4:19. My bowels, my bowels are in part, the senses of my heart are
troubled within me, I will not hold my peace, for my soul hath heard
the sound of the trumpet, the cry of battle.

4:20. Destruction upon destruction is called for, and all the earth is
laid waste:  my tents are destroyed on a sudden, and my pavilions in a
moment.

4:21. How long shall I see men fleeing away, how long shall I hear the
sound of the trumpet?

4:22. For my foolish people have not known me:  they are foolish and
senseless children:  they are wise to do evil, but to do good they have
no knowledge.

4:23. I beheld the earth, and lo it was void, and nothing:  and the
heavens, and there was no light in them.

4:24. I looked upon the mountains, and behold they trembled:  and all
the hills were troubled.

4:25. I beheld, and lo there was no man:  and all the birds of the air
were gone.

4:26. I looked, and behold Carmel was a wilderness:  and all its cities
were destroyed at the presence of the Lord, and at the presence of the
wrath of his indignation.

4:27. For thus saith the Lord:  All the land shall be desolate, but yet
I will not utterly destroy.

4:28. The Earth shall mourn, and the heavens shall lament from above:
because I have spoken, I have purposed, and I have not repented,
neither am I turned away from it.

4:29. At the voice of the horsemen, and the archers, all the city is
fled away:  they have entered into thickets and climbed up the rocks:
all the cities are forsaken, and there dwelleth not a man in them.

4:30. But when thou art spoiled what wilt thou do?  though thou clothest
thyself with scarlet, though thou deckest thee with ornaments of gold,
and paintest thy eyes with stibic stone, thou shalt dress thyself out
in vain:  thy lovers have despised thee, they will seek thy life.

4:31. For I have heard the voice as of a woman in travail, anguishes as
of a woman in labour of a child.  The voice of the daughter of Sion,
dying away, spreading her hands:  Woe is me, for my soul hath fainted
because of them that are slain.



Jeremias Chapter 5


The judgments of God shall fall upon the Jews for their manifold sins.

5:1. Go about through the streets of Jerusalem, and see, and consider,
and seek in the broad places thereof, if you can find a man that
executeth judgment, and seeketh faith:  and I will be merciful unto it.

5:2. And though they say:  The Lord liveth; this also they will swear
falsely.

5:3. O Lord, thy eyes are upon truth:  thou hast struck them, and they
have not grieved:  thou hast bruised them, and they have refused to
receive correction:  they have made their faces harder than the rock,
and they have refused to return.

5:4. But I said:  Perhaps these are poor and foolish, that know not the
way of the Lord, the judgment of their God.

5:5. I will go therefore to the great men, and will speak to them:  for
they have known the way of the Lord, the judgment of their God:  and
behold these have altogether broken the yoke more, and have burst the
bonds.

5:6. Wherefore a lion out of the wood hath slain them, a wolf in the
evening hath spoiled them, a leopard watcheth for their cities:  every
one that shall go out thence shall be taken, because their
transgressions are multiplied, their rebellions are strengthened.

5:7. How can I be merciful to thee?  thy children have forsaken me, and
swear by them that are not gods:  I fed them to the full, and they
committed adultery, and rioted in the harlot's house.

5:8. They are become as amorous horses and stallions:  every one neighed
after his neighbour's wife.

5:9. Shall I not visit for these things, saith the Lord?  and shall not
my soul take revenge on such a nation?

5:10. Scale the walls thereof, and throw them down, but do not utterly
destroy:  take away the branches thereof, because they are not the
Lord's.

5:11. For the house of Israel, and the house of Juda have greatly
transgressed against me, saith the Lord.

5:12. They have denied the Lord, and said, It is not he:  and the evil
shall not come upon us:  we shall not see the sword and famine.

5:13. The prophets have spoken in the wind, and there was no word of
God in them:  these things therefore shall befall them.

5:14. Thus saith the Lord the God of hosts:  because you have spoken
this word, behold I will make my words in thy mouth as fire, and this
people as wood, and it shall devour them.

5:15. Behold I will bring upon you a nation from afar, O house of
Israel, saith the Lord:  a strong nation, an ancient nation, a nation
whose language thou shalt not know, nor understand what they say.

5:16. Their quiver is as an open sepulchre, they are all valiant.

5:17. And they shall eat up thy corn, and thy bread:  they shall devour
thy sons, and thy daughters:  they shall eat up thy flocks, and thy
herds:  they shall eat thy vineyards, and thy figs:  and with the sword
they shall destroy thy strong cities, wherein thou trustest.

5:18. Nevertheless in those days, saith the Lord, I will not bring you
to utter destruction.

5:19. And if you shall say:  Why hath the Lord our God done all these
things to us?  thou shalt say to them:  As you have forsaken me, and
served a strange god in your own land, so shall you serve strangers in
a land that is not your own.

5:20. Declare ye this to the house of Jacob, and publish it in Juda,
saying:

5:21. Hear, O foolish people, and without understanding:  who have eyes,
and see not:  and ears, and hear not.

5:22. Will not you then fear me, saith the Lord:  and will you not
repent at my presence?  I have set the sand a bound for the sea, an
everlasting ordinance, which it shall not pass over:  and the waves
thereof shall toss themselves, and shall not prevail:  they shall swell,
and shall not pass over it.

5:23. But the heart of this people is become hard of belief and
provoking, they are revolted and gone away.

5:24. And they have not said in their heart:  Let us fear the Lord our
God, who giveth us the early and the latter rain in due season:  who
preserveth for us the fulness of the yearly harvest.

5:25. Your iniquities have turned these things away, and your sins have
withholden good things from you.

5:26. For among my people are found wicked men, that lie in wait as
fowlers, setting snares and traps to catch men.

5:27. As a net is full of birds, so their houses are full of deceit:
therefore are they become great and enriched.

5:28. They are grown gross and fat:  and have most wickedly transgressed
my words.  They have not judged the cause of the widow, they have not
managed the cause of the fatherless, and they have not judged the
judgment of the poor.

5:29. Shall I not visit for these things, saith the Lord?  or shall not
my soul take revenge on such a nation?

5:30. Astonishing and wonderful things have been done in the land.

5:31. The prophets prophesied falsehood, and the priests clapped their
hands:  and my people loved such things:  what then shall be done in the
end thereof?



Jeremias Chapter 6


The evils that threaten Jerusalem.  She is invited to return, and walk
in the good way, and not to rely on sacrifices without obedience.

6:1. Strengthen yourselves, ye sons of Benjamin, in the midst of
Jerusalem, and sound the trumpet in Thecua, and set up the standard
over Bethacarem:  for evil is seen out of the north, and a great
destruction.

6:2. I have likened the daughter of Sion to a beautiful and delicate
woman.

6:3. The shepherds shall come to her with their flocks:  they have
pitched their tents against her round about:  every one shall feed them
that are under his hand.

6:4. Prepare ye war against her:  arise, and let us go up at midday:  woe
unto us, for the day is declined, for the shadows of the evening are
grown longer.

6:5. Arise, and let us go up in the night, and destroy her houses.

6:6. For thus saith the Lord of hosts:  Hew down her trees, cast up a
trench about Jerusalem:  this is the city to be visited, all oppression
is in the midst of her.

6:7. As a cistern maketh its water cold, so hath she made her
wickedness cold:  violence and spoil shall be heard in her, infirmity
and stripes are continually before me.

6:8. Be thou instructed, O Jerusalem, lest my soul depart from thee,
lest I make thee desolate, a land uninhabited.

6:9. Thus saith the Lord of hosts:  They shall gather the remains of
Israel, as in a vine, even to one cluster:  turn back thy hand, as a
grapegatherer into the basket.

6:10. To whom shall I speak?  and to whom shall I testify, that he may
hear?  behold, their ears are uncircumcised, and they cannot hear:
behold the word of the Lord is become unto them a reproach:  and they
will not receive it.

6:11. Therefore am I full of the fury of the Lord, I am weary with
holding in:  pour it out upon the child abroad, and upon the council of
the young men together:  for man and woman shall be taken, the ancient
and he that is full of days.

6:12. And their houses shall be turned over to others, with their lands
and their wives together:  for I will stretch forth my hand upon the
inhabitants of the land, saith the Lord.

6:13. For from the least of them even to the greatest, all are given to
covetousness:  and from the prophet even to the priest, all are guilty
of deceit.

6:14. And they healed the breach of the daughter of my people
disgracefully, saying:  Peace, peace:  and there was no peace.

6:15. They were confounded, because they committed abomination:  yea,
rather they were not confounded with confusion, and they knew not how
to blush:  wherefore they shall fall among them that fall:  in the time
of their visitation they shall fall down, saith the Lord.

6:16. Thus saith the Lord:  Stand ye on the ways, and see, and ask for
the old paths, which is the good way, and walk ye in it:  and you shall
find refreshment for your souls.  And they said:  We will not walk.

6:17. And I appointed watchmen over you, saying:  Hearken ye to the
sound of the trumpet.  And they said:  We will not hearken.

6:18. Therefore hear, ye nations, and know, O congregation, what great
things I will do to them.

6:19. Hear, O earth:  Behold I will bring evils upon this people, the
fruits of their own thoughts:  because they have not heard my words, and
they have cast away my law.

6:20. To what purpose do you bring me frankincense from Saba, and the
sweet smelling cane from a far country?  your holocausts are not
acceptable, nor are your sacrifices pleasing to me.

6:21. Therefore thus saith the Lord:  Behold I will bring destruction
upon this people, by which fathers and sons together shall fall,
neighbour and kinsman shall perish.

6:22. Thus saith the Lord:  Behold a people cometh from the land of the
north, and a great nation shall rise up from the ends of the earth.

6:23. They shall lay hold on arrow and shield:  they are cruel, and will
have no mercy.  Their voice shall roar like the sea:  and they shall
mount upon horses, prepared as men for war, against thee, O daughter of
Sion.

6:24. We have heard the fame thereof, our hands grow feeble:  anguish
hath taken hold of us, as a woman in labour.

6:25. Go not out into the fields, nor walk in the highway:  for the
sword of the enemy, and fear is on every side.

6:26. Gird thee with sackcloth, O daughter of my people, and sprinkle
thee with ashes:  make thee mourning as for an only son, a bitter
lamentation, because the destroyer shall suddenly come upon us.

6:27. I have set thee for a strong trier among my people:  and thou
shalt know, and prove their way.

6:28. All these princes go out of the way, they walk deceitfully, they
are brass and iron:  they are all corrupted.

6:29. The bellows have failed, the lead is consumed in the fire, the
founder hath melted in vain:  for their wicked deeds are not consumed.

6:30. Call them reprobate silver, for the Lord hath rejected them.



Jeremias Chapter 7


The temple of God shall not protect a sinful people, without a sincere
conversion.  The Lord will not receive the prayers of the prophet for
them:  because they are obstinate in their sins.

7:1. The word that came to Jeremias from the Lord, saying:

7:2. Stand in the gate of the house of the Lord, and proclaim there
this word, and say:  Hear ye the word of the Lord, all ye men of Juda,
that enter in at these gates, to adore the Lord.

7:3. Thus saith the Lord of hosts the God of Israel:  Make your ways and
your doings good:  and I will dwell with you in this place.

7:4. Trust not in lying words, saying:  The temple of the Lord, the
temple of the Lord, it is the temple of the Lord.

7:5. For if you will order well your ways, and your doings:  if you will
execute judgment between a man and his neighbour,

7:6. If you oppress not the stranger, the fatherless, and the widow,
and shed not innocent blood in this place, and walk not after strange
gods to your own hurt,

7:7. I will dwell with you in this place:  in the land, which I gave to
your fathers from the beginning and for evermore.

7:8. Behold you put your trust in lying words, which shall not profit
you:

7:9. To steal, to murder, to commit adultery, to swear falsely, to
offer to Baalim, and to go after strange gods, which you know not.

7:10. And you have come, and stood before me in this house, in which my
name is called upon, and have said:  We are delivered, because we have
done all these abominations.

7:11. Is this house then, in which my name hath been called upon, in
your eyes become a den of robbers?  I, I am he:  I have seen it, saith
the Lord.

7:12. Go ye to my place in Silo, where my name dwelt from the
beginning:  and see what I did to it for the wickedness of my people
Israel:

7:13. And now, because you have done all these works, saith the Lord:
and I have spoken to you rising up early, and speaking, and you have
not heard:  and I have called you, and you have not answered:

7:14. I will do to this house, in which my name is called upon, and in
which you trust, and to the place which I have given you and your
fathers, as I did to Silo.

7:15. And I will cast you away from before my face, as I have cast away
all your brethren, the whole seed of Ephraim.

7:16. Therefore do not thou pray for this people, nor take to thee
praise and supplication for them:  and do not withstand me:  for I will
not hear thee.

7:17. Seest thou not what they do in the cities of Juda, and in the
streets of Jerusalem?

7:18. The children gather wood, and the fathers kindle the fire, and
the women knead the dough, to make cakes to the queen of heaven, and to
offer libations to strange gods, and to provoke me to anger.

Queen of heaven. . .That is, the moon, which they worshipped under that
name.

7:19. Do they provoke me to anger, saith the Lord?  is it not
themselves, to the confusion of their own countenance?

7:20. Therefore thus saith the Lord God:  Behold my wrath and my
indignation is enkindled against this place, upon men and upon beasts,
and upon the trees of the field, and upon the fruits of the land, and
it shall burn, and shall not be quenched.

7:21. Thus saith the Lord of hosts the God of Israel:  Add your burnt
offerings to your sacrifices, and eat ye the flesh.

7:22. For I spoke not to your fathers, and I commanded them not, in the
day that I brought them out of the land of Egypt, concerning the matter
of burnt offerings and sacrifices.

I commanded them not. . .Viz., such sacrifices as the Jews at this time
offered, without obedience; which was the thing principally commanded:
so that in comparison with it, the offering of the holocausts and
sacrifices was of small account.

7:23. But this thing I commanded them, saying:  Hearken to my voice, and
I will be your God, and you shall be my people:  and walk ye in all the
way that I have commanded you, that it may be well with you.

7:24. But they hearkened not, nor inclined their ear:  but walked in
their own will, and in the perversity of their wicked heart:  and went
backward and not forward,

7:25. From the day that their fathers came out of the land of Egypt,
even to this day.  And I have sent to you all my servants the prophets,
from day to day, rising up early and sending.

7:26. And they have not hearkened to me:  nor inclined their ear:  but
have hardened their neck, and have done worse than their fathers.

7:27. And thou shalt speak to them all these words, but they will not
hearken to thee:  and thou shalt call them, but they will not answer
thee.

7:28. And thou shalt say to them:  This is a nation which hath not
hearkened to the voice of the Lord their God, nor received instruction:
faith is lost, and is taken away out of their mouth.

7:29. Cut off thy hair, and cast it away:  and take up a lamentation on
high:  for the Lord hath rejected, and forsaken the generation of his
wrath,

7:30. Because the children of Juda have done evil in my eyes, saith the
Lord.  They have set their abominations in the house in which my name is
called upon, to pollute it;

7:31. And they have built the high places of Topheth, which is in the
valley of the son of Ennom, to burn their sons, and their daughters in
the fire:  which I commanded not, nor thought on in my heart.

7:32. Therefore behold the days shall come, saith the Lord, and it
shall no more be called Topheth, nor the valley of the son of Ennom:
but the valley of slaughter:  and they shall bury in Topheth, because
there is no place.

7:33. And the carcasses of this people shall be meat for the fowls of
the air, and for the beasts of the earth, and there shall be none to
drive them away.

7:34. And I will cause to cease out of the cities of Juda, and out of
the streets of Jerusalem, the voice of joy, and the voice of gladness,
the voice of the bridegroom and the voice of the bride:  for the land
shall be desolate.



Jeremias Chapter 8


Other evils that shall fall upon the Jews for their impenitence.

8:1. At that time, saith the Lord, they shall cast out the bones of the
kings of Juda, and the bones of the princes thereof, and the bones of
the priests, and the bones of the prophets, and the bones of the
inhabitants of Jerusalem, out of their graves.

8:2. And they shall spread them abroad to the sun, and the moon, and
all the host of heaven, whom they have loved, and whom they have
served, and after whom have walked, and whom they have sought, and
adored:  they shall not be gathered, and they shall not be buried:  they
shall be as dung upon the face of the earth.

8:3. And death shall be chosen rather than life by all that shall
remain of this wicked kindred in all places, which are left, to which I
have cast them out, saith the Lord of hosts.

8:4. And thou shalt say to them:  Thus saith the Lord:  Shall not he that
falleth, rise again?  and he that is turned away, shall he not turn
again?

8:5. Why then is this people in Jerusalem turned away with a stubborn
revolting?  they have laid hold on lying, and have refused to return.

8:6. I attended, and hearkened; no man speaketh what is good, there is
none that doth penance for his sin, saying:  What have I done?  They are
all turned to their own course, as a horse rushing to the battle.

8:7. The kite in the air hath known her time:  the turtle, and the
swallow, and the stork have observed the time of their coming:  but my
people have not known the judgment of the Lord.

8:8. How do you say:  We are wise, and the law of the Lord is with us?
Indeed the lying pens of the scribes hath wrought falsehood.

8:9. The wise men are confounded, they are dismayed, and taken:  for
they have cast away the word of the Lord, and there is no wisdom in
them.

8:10. Therefore will I give their women to strangers, their fields to
others for an inheritance:  because from the least even to the greatest
all follow covetousness:  from the prophet even to the priest all deal
deceitfully.

8:11. And they healed the breach of the daughter of my people
disgracefully, saying:  Peace, peace:  when there was no peace.

8:12. They are confounded, because they have committed abomination:  yea
rather they are not confounded with confusion, and they have not known
how to blush:  therefore shall they fall among them that fall; in the
time of their visitation they shall fall, saith the Lord.

8:13. Gathering I will gather them together, saith the Lord, there is
no grape on the vines, and there are no figs on the fig tree, the leaf
is fallen:  and I have given them the things that are passed away.

8:14. Why do we sit still?  assemble yourselves, and let us enter into
the fenced city, and let us be silent there:  for the Lord our God hath
put us to silence, and hath given us water of gall to drink:  for we
have sinned against the Lord.

8:15. We looked for peace and no good came:  for a time of healing, and
behold fear.

8:16. The snorting of his horses was heard from Dan, all the land was
moved at the sound of the neighing of his warriors:  and they came and
devoured the land, and all that was in it:  the city and its
inhabitants.

8:17. For behold I will send among you serpents, basilisks, against
which there is no charm:  and they shall bite you, saith the Lord.

8:18. My sorrow is above sorrow, my heart mourneth within me.

8:19. Behold the voice of the daughter of my people from a far country:
Is not the Lord in Sion, or is not her king in her?  why then have they
provoked me to wrath with their idols, and strange vanities?

8:20. The harvest is past, the summer is ended, and we are not saved.

8:21. For the affliction of the daughter of my people I am afflicted,
and made sorrowful, astonishment hath taken hold on me.

8:22. Is there no balm in Galaad?  or is there no physician there?  Why
then is not the wound of the daughter of my people closed?



Jeremias Chapter 9


The prophet laments the miseries of his people:  and their sins, which
are the cause of them.  He exhorts them to repentance.

9:1. Who will give water to my head, and a fountain of tears to my
eyes?  and I will weep day and night for the slain of the daughter of my
people.

9:2. Who will give me in the wilderness a lodging place of wayfaring
men, and I will leave my people, and depart from them?  because they are
all adulterers, an assembly of transgressors.

9:3. And they have bent their tongue, as a bow, for lies, and not for
truth:  they have strengthened themselves upon the earth, for they have
proceeded from evil to evil, and me they have not known, saith the
Lord.

9:4. Let every man take heed of his neighbour, and let him not trust in
any brother of his:  for every brother will utterly supplant, and every
friend will walk deceitfully.

9:5. And a man shall mock his brother, and they will not speak the
truth:  for they have taught their tongue to speak lies:  they have
laboured to commit iniquity.

9:6. Thy habitation is in the midst of deceit:  through deceit they have
refused to know me, saith the Lord.

9:7. Therefore thus saith the Lord of hosts:  Behold I will melt, and
try them:  for what else shall I do before the daughter of my people?

9:8. Their tongue is a piercing arrow, it hath spoken deceit:  with his
mouth one speaketh peace with his friend, and secretly he lieth in wait
for him.

9:9. Shall I not visit them for these things, saith the Lord?  or shall
not my soul be revenged on such a nation?

9:10. For the mountains I will take up weeping and lamentation, and for
the beautiful places of the desert, mourning:  because they are burnt
up, for that there is not a man that passeth through them:  and they
have not heard the voice of the owner:  from the fowl of the air to the
beasts they are gone away and departed.

9:11. And I will make Jerusalem to be heaps of sand, and dens of
dragons:  and I will make the cities of Juda desolate, for want of an
inhabitant.

9:12. Who is the wise man, that may understand this, and to whom the
word of the mouth of the Lord may come that he may declare this, why
the land hath perished, and is burnt up like a wilderness, which none
passeth through?

9:13. And the Lord said:  Because they have forsaken my law, which I
gave them, and have not heard my voice, and have not walked in it.

9:14. But they have gone after the perverseness of their own heart, and
after Baalim, which their fathers taught them.

9:15. Therefore thus saith the Lord of hosts the God of Israel:  Behold
I will feed this people with wormwood, and give them water of gall to
drink.

9:16. And I will scatter them among the nations, which they and their
fathers have not known:  and I will send the sword after them till they
be consumed.

9:17. Thus saith the Lord of hosts the God of Israel:  Consider ye, and
call for the mourning women, and let them come:  and send to them that
are wise women, and let them make haste:

9:18. Let them hasten and take up a lamentation for us:  let our eyes
shed tears, and our eyelids run down with waters.

9:19. For a voice of wailing is heard out of Sion:  How are we wasted
and greatly confounded?  because we have left the land, because our
dwellings are cast down.

9:20. Hear therefore, ye women, the word of the Lord:  and let your ears
receive the word of his mouth:  and teach your daughters wailing:  and
every one her neighbour mourning.

9:21. For death is come up through our windows, it is entered into our
houses to destroy the children from without, the young men from the
streets.

9:22. Speak:  Thus saith the Lord:  Even the carcass of man shall fall as
dung upon the face of the country, and as grass behind the back of the
mower, and there is none to gather it.

9:23. Thus saith the Lord:  Let not the wise man glory in his wisdom,
and let not the strong man glory in his strength, and let not the rich
man glory in his riches:

9:24. But let him that glorieth glory in this, that he understandeth
and knoweth me, for I am the Lord that exercise mercy, and judgment,
and justice in the earth:  for these things please me, saith the Lord.

9:25. Behold, the days come, saith the Lord, and I will visit upon
every one that hath the foreskin circumcised.

9:26. Upon Egypt, and upon Juda, and upon Edom, and upon the children
of Ammon, and upon Moab, and upon all that have their hair polled
round, that dwell in the desert:  for all the nations are uncircumcised
in the flesh, but all the house of Israel are uncircumcised in the
heart.



Jeremias Chapter 10


Neither stars nor idols are to be feared, but the great Creator of all
things.  The chastisement of Jerusalem for her sins.

10:1. Hear ye the word which the Lord hath spoken concerning you, O
house of Israel.

10:2. Thus saith the Lord:  Learn not according to the ways of the
Gentiles:  and be not afraid of the signs of heaven, which the heathens
fear:

10:3. For the laws of the people are vain:  for the works of the hand of
the workman hath cut a tree out of the forest with an axe.

10:4. He hath decked it with silver and gold:  he hath put it together
with nails and hammers, that it may not fall asunder.

10:5. They are framed after the likeness of a palm tree, and shall not
speak:  they must be carried to be removed, because they cannot go.
Therefore fear them not, for they can neither do evil nor good.

10:6. There is none like to thee, O Lord:  thou art great, and great is
thy name in might.

10:7. Who shall not fear thee, O king of nations?  for thine is the
glory:  among all the wise men of the nations, and in all their kingdoms
there is none like unto thee.

10:8. They shall be all proved together to be senseless and foolish:
the doctrine of their vanity is wood.

10:9. Silver spread into plates is brought from Tharsis, and gold from
Ophaz:  the work of the artificer, and of the hand of the coppersmith:
violet and purple is their clothing:  all these things are the work of
artificers.

10:10. But the Lord is the true God:  he is the living God, and the
everlasting king:  at his wrath the earth shall tremble, and the nations
shall not be able to abide his threatening.

10:11. Thus then shall you say to them:  The gods that have not made
heaven and earth, let them perish from the earth, and from among those
places that are under heaven.

10:12. He that maketh the earth by his power, that prepareth the world
by his wisdom, and stretcheth out the heavens by his knowledge.

10:13. At his voice he giveth a multitude of waters in the heaven, and
lifteth up the clouds from the ends of the earth:  he maketh lightnings
for rain, and bringeth forth the wind out of his treasures.

10:14. Every man is become a fool for knowledge, every artist is
confounded in his graven idol:  for what he hath cast is false, and
there is no spirit in them.

10:15. They are vain things, and a ridiculous work:  in the time of
their visitation they shall perish.

10:16. The portion of Jacob is not like these:  for it is he who formed
all things:  and Israel is the rod of his inheritance:  the Lord of hosts
is his name.

10:17. Gather up thy shame out of the land, thou that dwellest in a
siege.

10:18. For thus saith he Lord:  Behold I will cast away far off the
inhabitants of the land at this time:  and I will afflict them, so that
they may be found.

10:19. Woe is me for my destruction, my wound is very grievous.  But I
said:  Truly this is my own evil, and I will bear it.

10:20. My tabernacle is laid waste, all my cords are broken:  my
children are gone out from me, and they are not:  there is none to
stretch forth my tent any more, and to set up my curtains.

10:21. Because the pastors have done foolishly, and have not sought the
Lord:  therefore have they not understood, and all their flock is
scattered.

10:22. Behold the sound of a noise cometh, a great commotion out of the
land of the north:  to make the cities of Juda a desert, and a dwelling
for dragons.

10:23. I know, O Lord, that the way of a man is not his:  neither is it
in a man to walk, and to direct his steps.

The way of a man is not his. . .The meaning is, that notwithstanding
man's free will, yet he can do no good without God's help, nor evil
without his permission.  So that, in the present case, all the evils
which Nabuchodonosor was about to bring upon Jerusalem, could not have
come but by the will of God.

10:24. Correct me, O Lord, but yet with judgment:  and not in thy fury,
lest thou bring me to nothing.

10:25. Pour out thy indignation upon the nations that have not known
thee, and upon the provinces that have not called upon thy name:
because they have eaten up Jacob, and devoured him, and consumed him,
and have destroyed his glory.



Jeremias Chapter 11


The prophet proclaims the covenant of God:  and denounces evils to the
obstinate transgressors of it.  The conspiracy of the Jews against him,
a figure of their conspiracy against Christ.

11:1. The word that came from the Lord to Jeremias, saying:

11:2. Hear ye the words of this covenant, and speak to the men of Juda,
and to the inhabitants of Jerusalem,

11:3. And thou shalt say to them:  Thus saith the Lord the God of
Israel:  Cursed is the man that shall not hearken to the words of this
covenant,

11:4. Which I commanded your fathers in the day that I brought them out
of the land of Egypt, from the iron furnace, saying:  Hear ye my voice,
and do all things that I command you:  and you shall be my people, and I
will be your God:

11:5. That I may accomplish the oath which I swore to your fathers, to
give them a land flowing with milk and honey, as it is this day.  And I
answered and said:  Amen, O Lord.

11:6. And the Lord said to me:  Proclaim aloud all these words in the
cities of Juda, and in the streets of Jerusalem, saying:  Hear ye the
words of the covenant, and do them:

11:7. For protesting I conjured your fathers in the day that I brought
them out of the land of Egypt even to this day:  rising early I conjured
them, and said:  Hearken ye to my voice:

11:8. And they obeyed not, nor inclined their ear:  but walked every one
in the perverseness of his own wicked heart:  and I brought upon them
all the words of this covenant, which I commanded them to do, but they
did them not.

11:9. And the Lord said to me:  A conspiracy is found among the men of
Juda, and among the inhabitants of Jerusalem.

11:10. They are returned to the former iniquities of their fathers, who
refused to hear my words:  so these likewise have gone after strange
gods, to serve them:  the house of Israel, and the house of Juda have
made void my covenant, which I made with their fathers.

11:11. Wherefore thus saith the Lord:  Behold I will bring in evils upon
them, which they shall not be able to escape:  and they shall cry to me,
and I will not hearken to them.

11:12. And the cities of Juda, and the inhabitants of Jerusalem shall
go, and cry to the gods to whom they offer sacrifice, and they shall
not save them in the time of their affliction.

11:13. For according to the number of thy cities were thy gods, O Juda:
and according to the number of the streets of Jerusalem thou hast set
up altars of confusion, altars to offer sacrifice to Baalim.

11:14. Therefore do not thou pray for this people, and do not take up
praise and prayer for them:  for I will not hear them in the time of
their cry to me, in the time of their affliction.

11:15. What is the meaning that my beloved hath wrought much wickedness
in my house?  shall the holy flesh take away from thee thy crimes, in
which thou hast boasted?

11:16. The Lord called thy name, a plentiful olive tree, fair,
fruitful, and beautiful:  at the noise of a word, a great fire was
kindled in it, and the branches thereof are burnt.

11:17. And the Lord of hosts that planted thee, hath pronounced evil
against thee:  for the evils of the house of Israel, and of the house of
Juda, which they have done to themselves, to provoke me, offering
sacrifice to Baalim.

11:18. But thou, O Lord, hast shewn me, and I have known:  then thou
shewedst me their doings.

11:19. And I was as a meek lamb, that is carried to be a victim:  and I
knew not that they had devised counsels against me, saying:  Let us put
wood on his bread, and cut him off from the land of the living, and let
his name be remembered no more.

11:20. But thou, O Lord of Sabaoth, who judgest justly, and triest the
reins and the hearts, let me see thy revenge on them:  for to thee have
I revealed my cause.

Sabaoth. . .That is, of hosts or armies, a name frequently given to God
in the scriptures.--Ibid.  Thy revenge. . .This was rather a prediction
of what was to happen, with an approbation of the divine justice, than an
imprecation.

11:21. Therefore thus saith the Lord to the men of Anathoth, who seek
thy life, and say:  Thou shalt not prophesy in the name of the Lord, and
thou shalt not die in our hands.

11:22. Therefore thus saith the Lord of hosts:  Behold I will visit upon
them:  their young men shall die by the sword, their sons and their
daughters shall die by famine.

11:23. And there shall be no remains of them:  for I will bring in evil
upon the men of Anathoth, the year of their visitation.



Jeremias Chapter 12


The prosperity of the wicked shall be but for a short time.  The
desolation of the Jews for their sins.  Their return from their
captivity.

12:1. Thou indeed, O Lord, art just, if I plead with thee, but yet I
will speak what is just to thee:  Why doth the way of the wicked
prosper:  why is it well with all them that transgress, and do wickedly?

12:2. Thou hast planted them, and they have taken root:  they prosper
and bring forth fruit:  thou art near in their mouth, and far from their
reins.

12:3. And thou, O Lord, hast known me, thou hast seen me, and proved my
heart with thee:  gather them together as for the day of slaughter.

12:4. How long shall the land mourn, and the herb of every field wither
for the wickedness of them that dwell therein?  The beasts and the birds
are consumed:  because they have said:  He shall not see our last end.

12:5. If thou hast been wearied with running with footmen, how canst
thou contend with horses?  and if thou hast been secure in a land of
peace, what wilt thou do in the swelling of the Jordan?

12:6. For even thy brethren, and the house of thy father, even they
have fought against thee, and have cried after thee with full voice:
believe them not when they speak good things to thee.

12:7. I have forsaken my house, I have left my inheritance:  I have
given my dear soul into the hand of her enemies.

12:8. My inheritance is become to me as a lion in the wood:  it hath
cried out against me, therefore have I hated it.

12:9. Is my inheritance to me as a speckled bird?  is it as a bird dyed
throughout?  come ye, assemble yourselves, all ye beasts of the earth,
make haste to devour.

12:10. Many pastors have destroyed my vineyard, they have trodden my
portion under foot:  they have changed my delightful portion into a
desolate wilderness.

12:11. They have laid it waste, and it hath mourned for me.  With
desolation is all the land made desolate; because there is none that
considereth in the heart.

12:12. The spoilers are come upon all the ways of the wilderness, for
the sword of the Lord shall devour from one end of the land to the
other end thereof:  there is no peace for all flesh.

12:13. They have sown wheat, and reaped thorns:  they have received an
inheritance, and it shall not profit them:  you shall be ashamed of your
fruits, because of the fierce wrath of the Lord.

12:14. Thus saith the Lord against all wicked neighbours, that touch
the inheritance that I have shared out to my people Israel:  Behold I
will pluck them out of their land, and I will pluck the house of Juda
out of the midst of them.

12:15. And when I shall have plucked them out, I will return, and have
mercy on them:  and will bring them back, every man to his inheritance,
and every man into his land.

12:16. And it shall come to pass, if they will be taught, and will
learn the ways of my people, to swear by my name:  The Lord liveth, as
they have taught my people to swear by Baal:  that they shall be built
up in the midst of my people.

12:17. But if they will not hear, I will utterly pluck out and destroy
that nation, saith the Lord.



Jeremias Chapter 13


Under the figure of a linen girdle is foretold the destruction of the
Jews.  Their obstinacy in sin brings all miseries upon them.

13:1. Thus saith the Lord to me:  Go, and get thee a linen girdle, and
thou shalt put it about thy loins, and shalt not put it into water.

13:2. And I got a girdle according to the word of the Lord, and put it
about my loins.

13:3. And the word of the Lord came to me the second time, saying:

13:4. Take the girdle which thou hast got, which is about thy loins,
and arise, go to the Euphrates, and hide it there in a hole of the
rock.

13:5. And I went, and hid it by the Euphrates, as the Lord had
commanded me.

13:6. And it came to pass after many days, that the Lord said to me:
Arise, go to the Euphrates, and take from thence the girdle, which I
commanded thee to hide there.

13:7. And I went to the Euphrates, and digged, and took the girdle out
of the place where I had hid it and behold the girdle was rotten, so
that it was fit for no use.

13:8. And the word of the Lord came to me, saying:

13:9. Thus saith the Lord:  After this manner will I make the pride of
Juda, and the great pride of Jerusalem to rot.

13:10. This wicked people, that will not hear my words, and that walk
in the perverseness of their heart, and have gone after strange gods to
serve them, and to adore them:  and they shall be as this girdle ,which
is fit for no use.

13:11. For as the girdle sticketh close to the loins of a man, so have
I brought close to me all the house of Israel, and all the house of
Juda, saith the Lord:  that they might be my people, and for a name, and
for a praise, and for a glory:  but they would not hear.

13:12. Thou shalt speak therefore to them this word:  Thus saith the
Lord the God of Israel:  Every bottle shall be filled with wine.  And
they shall say to thee:  Do we not know that every bottle shall be
filled with wine?

13:13. And thou shalt say to them:  Thus saith the Lord:  Behold I will
fill all the inhabitants of this land, and the kings of the race of
David that sit upon his throne, and the priests, and the prophets, and
all the inhabitants of Jerusalem, with drunkenness.

13:14. And I will scatter them every man from his brother, and fathers
and sons in like manner, saith the Lord:  I will not spare, and I will
not pardon:  nor will I have mercy, but to destroy them.

13:15. Hear ye, and give ear:  Be not proud, for the Lord hath spoken.

13:16. Give ye glory to the Lord your God, before it be dark, and
before your feet stumble upon the dark mountains:  you shall look for
light, and he will turn it into the shadow of death, and into darkness.

13:17. But if you will not hear this, my soul shall weep in secret for
your pride:  weeping it shall weep, and my eyes shall run down with
tears, because the flock of the Lord is carried away captive.

13:18. Say to the king, and to the queen:  Humble yourselves, sit down:
for the crown of your glory is come down from your head.

13:19. The cities of the south are shut up, and there is none to open
them:  all Juda is carried away captive with an entire captivity.

13:20. Lift up your eyes, and see, you that come from the north:  where
is the flock that is given thee, thy beautiful cattle?

13:21. What wilt thou say when he shall visit thee?  for thou hast
taught them against thee, and instructed them against thy own head:
shall not sorrows lay hold on thee, as a woman in labour?

13:22. And if thou shalt say in thy heart:  Why are these things come
upon me?  For the greatness of thy iniquity, thy nakedness is
discovered, the soles of thy feet are defiled.

13:23. If the Ethiopian can change his skin, or the leopard his spots:
you also may do well, when you have learned evil.

13:24. And I will scatter them as stubble, which is carried away by the
wind in the desert.

13:25. This is thy lot, and the portion of thy measure from me, saith
the Lord, because thou hast forgotten me, and hast trusted in
falsehood.

13:26. Wherefore I have also bared thy thighs against thy face, and thy
shame hath appeared.

13:27. I have seen thy adulteries, and thy neighing, the wickedness of
thy fornication:  and thy abominations, upon the hills in the field.  Woe
to thee, Jerusalem, wilt thou not be made clean after me:  how long yet?



Jeremias Chapter 14


A grievous famine:  and the prophet's prayer on that occasion.  Evils
denounced to false prophets.  The prophet mourns for his people.

14:1. The word of the Lord that came to Jeremias concerning the words
of the drought.

14:2. Judea hath mourned, and the gates thereof are fallen, and are
become obscure on the ground, and the cry of Jerusalem is gone up.

14:3. The great ones sent their inferiors to the water:  they came to
draw, they found no water, they carried back their vessels empty:  they
were confounded and afflicted, and covered their heads.

14:4. For the destruction of the land, because there came no rain upon
the earth, the husbandman were confounded, they covered their heads.

14:5. Yea, the hind also brought forth in the field, and left it,
because there was no grass.

14:6. And the wild asses stood upon the rocks, they snuffed up the wind
like dragons, their eyes failed, because there was no grass.

14:7. If our iniquities have testified against us, O Lord, do thou it
for thy name's sake, for our rebellions are many, we have sinned
against thee.

14:8. O expectation of Israel, the Saviour thereof in time of trouble:
why wilt thou be as a stranger in the land, and as a wayfaring man
turning in to lodge?

14:9. Why wilt thou be as a wandering man, as a mighty man that cannot
save?  but thou, O Lord, art among us, and thy name is called upon by
us, forsake us not.

14:10. Thus saith the Lord to this people, that have loved to move
their feet, and have not rested, and have not pleased the Lord:  He will
now remember their iniquities, and visit their sins.

14:11. And the Lord said to me:  Pray not for this people for their
good.

14:12. When they fast I will not hear their prayers:  and if they offer
holocausts and victims, I will not receive them:  for I will consume
them by the sword, and by famine, and by the pestilence.

14:13. And I said:  Ah, ah, ah, O Lord God, the prophets say to them:
You shall not see the sword, and there shall be no famine among you,
but he will give you true peace in this place.

14:14. And the Lord said to me:  The prophets prophesy falsely in my
name:  I sent them not, neither have I commanded them, nor have I spoken
to them:  they prophesy unto you a lying vision, and divination and
deceit, and the seduction of their own heart.

14:15. Therefore thus saith the Lord concerning the prophets that
prophesy in my name, whom I did not send, that say:  Sword and famine
shall not be in this land:  By sword and famine shall those prophets be
consumed.

14:16. And the people to whom they prophesy, shall be cast out in the
streets of Jerusalem because of the famine and the sword, and there
shall be none to bury them:  they and their wives, their sons and their
daughters, and I will pour out their own wickedness upon them.

14:17. And thou shalt speak this word to them:  Let my eyes shed down
tears night and day, and let them not cease, because the virgin
daughter of my people is afflicted with a great affliction, with an
exceeding grievous evil.

14:18. If I go forth into the fields, behold the slain with the sword:
and if I enter into the city, behold them that are consumed with
famine.  The prophet also and the priest are gone into a land which they
knew not.

14:19. Hast thou utterly cast away Juda, or hath thy soul abhorred
Sion?  why then hast thou struck us, so that there is no healing for us?
we have looked for peace, and there is no good:  and for the time of
healing, and behold trouble.

14:20. We acknowledge, O Lord, our wickedness, the iniquities of our
fathers, because we have sinned against thee.

14:21. Give us not to be a reproach, for thy name's sake, and do not
disgrace in us the throne of thy glory:  remember, break not thy
covenant with us.

14:22. Are there any among the graven things of the Gentiles that can
send rain?  or can the heavens give showers?  art not thou the Lord our
God, whom we have looked for?  for thou hast made all these things.



Jeremias Chapter 15


God is determined to punish the Jews for their sins.  The prophet's
complaint, and God's promise to him.

15:1. And the Lord said to me:  If Moses and Samuel shall stand before
me, my soul is not towards this people:  cast them out from my sight,
and let them go forth.

15:2. And if they shall say unto thee:  Whither shall we go forth?  thou
shalt say to them:  Thus saith the Lord:  Such as are for death, to
death:  and such as are for the sword, to the sword:  and such as are for
famine, to famine:  and such as are for captivity, to captivity.

15:3. And I will visit them with four kinds, saith the Lord:  The sword
to kill, and the dogs to tear, and the fowls of the air, and the beasts
of the earth, to devour and to destroy.

15:4. And I will give them up to the rage of all the kingdoms of the
earth:  because of Manasses the son of Ezechias the king of Juda, for
all that he did in Jerusalem.

15:5. For who shall have pity on thee, O Jerusalem?  or who shall bemoan
thee?  or who shall go to pray for thy peace?

15:6. Thou hast forsaken me, saith the Lord, thou art gone backward:
and I will stretch out my hand against thee, and I will destroy thee:  I
am weary of entreating thee.

15:7. And I will scatter them with a fan in the gates of the land:  I
have killed and destroyed my people, and yet they are not returned from
their ways.

15:8. Their widows are multiplied unto me above the sand of the sea:  I
have brought upon them against the mother of the young man a spoiler at
noonday:  I have cast a terror on a sudden upon the cities.

15:9. She that hath borne seven is become weak, her soul hath fainted
away:  her sun is gone down, while it was yet day:  she is confounded,
and ashamed:  and the residue of them I will give up to the sword in the
sight of their enemies, saith the Lord.

15:10. Woe is me, my mother:  why hast thou borne me a man of strife, a
man of contention to all the earth?  I have not lent on usury, neither
hath any man lent to me on usury:  yet all curse me.

15:11. The Lord saith to me:  Assuredly it shall be well with thy
remnant, assuredly I shall help thee in the time of affliction, and in
the time of tribulation against the enemy.

15:12. Shall iron be allied with the iron from the north, and the
brass?

Shall iron be allied, etc. . .Shall the iron, that is, the strength of
Juda, stand against the stronger iron of the north, that is, of
Babylon:  or enter into an alliance upon equal footing with it?  No
certainly:  but it must be broken by it.

15:13. Thy riches and thy treasures I will give unto spoil for nothing,
because of all thy sins, even in all thy borders.

15:14. And I will bring thy enemies out of a land, which thou knowest
not:  for a fire is kindled in my rage, it shall burn upon you.

15:15. O Lord, thou knowest, remember me, and visit me, and defend me
from them that persecute me, do not defend me in thy patience:  know
that for thy sake I have suffered reproach.

Do not defend me in thy patience. . .That is, let not thy patience and
longsuffering, which thou usest towards sinners, keep thee from making
haste to my assistance.

15:16. Thy words were found, and I did eat them, and thy word was to me
a joy and gladness of my heart:  for thy name is called upon me, O Lord
God of hosts.

15:17. I sat not in the assembly of jesters, nor did I make a boast of
the presence of thy hand:  I sat alone, because thou hast filled me with
threats.

15:18. Why is my sorrow become perpetual, and my wound desperate so as
to refuse to be healed?  it is become to me as the falsehood of
deceitful waters that cannot be trusted.

15:19. Therefore thus saith the Lord:  If thou wilt be converted, I will
convert thee, and thou shalt stand before my face; and thou wilt
separate the precious from the vile, thou shalt be as my mouth:  they
shall be turned to thee, and thou shalt not be turned to them.

15:20. And I will make thee to this people as a strong wall of brass:
and they shall fight against thee, and shall not prevail:  for I am with
thee to save thee, and to deliver thee, saith the Lord.

15:21. And I will deliver thee out of the hand of the wicked, and I
will redeem thee out of the hand of the mighty.



Jeremias Chapter 16


The prophet is forbid to marry.  The Jews shall be utterly ruined for
their idolatry:  but shall at length be released from their captivity,
and the Gentiles shall be converted.

16:1. And the word of the Lord came to me, saying:

16:2. Thou shalt not take thee a wife, neither shalt thou have sons and
daughters in this place.

16:3. For thus saith the Lord concerning the sons and daughters, that
are born in this place, and concerning their mothers that bore them:
and concerning their fathers, of whom they were born in this land:

16:4. They shall die by the death of grievous illnesses:  they shall not
be lamented, and they shall not be buried, they shall be as dung upon
the face of the earth:  and they shall be consumed with the sword, and
with famine:  and their carcasses shall be meat for the fowls of the
air, and for the beasts of the earth.

16:5. For thus saith the Lord:  Enter not into the house of feasting,
neither go thou to mourn, nor to comfort them:  because I have taken
away my peace from this people, saith the Lord, my mercy and
commiserations.

16:6. Both the great and the little shall die in this land:  they shall
not be buried nor lamented, and men shall not cut themselves, nor make
themselves bald for them.

16:7. And they shall not break bread among them to him that mourneth,
to comfort him for the dead:  neither shall they give them for their
father and mother.

16:8. And do not thou go into the house of feasting, to sit with them,
and to eat and drink:

16:9. For thus saith the Lord of hosts, the God of Israel:  Behold I
will take away out of this place in your sight, and in your days the
voice of mirth, and the voice of gladness, the voice of the bridegroom,
and the voice of the bride.

16:10. And when thou shalt tell this people all these words, and they
shall say to thee:  Wherefore hath the Lord pronounced against us all
this great evil?  what is our iniquity?  and what is our sin, that we
have sinned against the Lord our God?

16:11. Thou shalt say to them:  Because your fathers forsook me, saith
the Lord:  and went after strange gods, and served them, and adored
them:  and they forsook me, and kept not my law.

16:12. And you also have done worse than your fathers:  for behold every
one of you walketh after the perverseness of his evil heart, so as not
to hearken to me.

16:13. So I will cast you forth out of this land, into a land which you
know not, nor your fathers:  and there you shall serve strange gods day
and night, which shall not give you any rest.

16:14. Therefore behold the days come, saith the Lord, when it shall be
said no more:  The Lord liveth, that brought forth the children of
Israel out of the land of Egypt.

16:15. But, The Lord liveth, that brought the children of Israel out of
the land of the north, and out of all the lands to which I cast them
out:  and I will bring them again into their land, which I gave to their
fathers.

16:16. Behold I will send many fishers, saith the Lord, and they shall
fish them:  and after this I will send them many hunters, and they shall
hunt them from every mountain, and from every hill and out of the holes
of the rocks.

16:17. For my eyes are upon all their ways:  they are not hid from my
face, and their iniquity hath not been hid from my eyes.

16:18. And I will repay first their double iniquities, and their sins:
because they have defiled my land with the carcasses of their idols,
and they have filled my inheritance with their abominations.

16:19. O Lord, my might, and my strength, and my refuge in the day of
tribulation:  to thee the Gentiles shall come from the ends of the
earth, and shall say:  Surely our fathers have possessed lies, a vanity
which hath not profited them.

16:20. Shall a man make gods unto himself and they are no gods?

16:21. Therefore behold I will this once cause them to know, I will
shew them my hand and my power:  and they shall know that my name is the
Lord.



Jeremias Chapter 17


For their obstinacy in sin the Jews shall be led captive.  He is cursed
that trusteth in flesh.  God alone searcheth the heart, giving to every
one as he deserves.  The prophet prayeth to be delivered from his
enemies, and preacheth up the observance of the sabbath.

17:1. The sin of Juda is written with a pen of iron, with the point of
a diamond, it is graven upon the table of their heart, upon the horns
of their altars.

17:2. When their children shall remember their altars, and their
groves, and their green trees upon the high mountains,

17:3. Sacrificing in the field:  I will give thy strength, and all thy
treasures to the spoil, and thy high places for sin in all thy borders.

17:4. And thou shalt be left stripped of thy inheritance, which I gave
thee:  and I will make thee serve thy enemies in a land which thou
knowest not:  because thou hast kindled a fire in my wrath, it shall
burn for ever.

17:5. Thus saith the Lord:  Cursed be the man that trusteth in man, and
maketh flesh his arm, and whose heart departeth from the Lord.

17:6. For he shall be like tamaric in the desert, and he shall not see
when good shall come:  but he shall dwell in dryness in the desert in a
salt land, and not inhabited.

Tamaric. . .A barren shrub that grows in the driest parts of the
wilderness.

17:7. Blessed be the man that trusteth in the Lord, and the Lord shall
be his confidence.

17:8. And he shall be as a tree that is planted by the waters, that
spreadeth out its roots towards moisture:  and it shall not fear when
the heat cometh.  And the leaf thereof shall be green, and in the time
of drought it shall not be solicitous, neither shall it cease at any
time to bring forth fruit.

17:9. The heart is perverse above all things, and unsearchable, who can
know it?

17:10. I am the Lord who search the heart, and prove the reins:  who
give to every one according to his way, and according to the fruit of
his devices.

17:11. As the partridge hath hatched eggs which she did not lay:  so is
he that hath gathered riches, and not by right:  in the midst of his
days he shall leave them, and in his latter end he shall be a fool.

17:12. A high and glorious throne from the beginning is the place of
our sanctification.

17:13. O Lord, the hope of Israel:  all that forsake thee shall be
confounded:  they that depart from thee, shall be written in the earth:
because they have forsaken the Lord, the vein of living waters.

17:14. Heal me, O Lord, and I shall be healed:  save me, and I shall be
saved:  for thou art my praise.

17:15. Behold they say to me:  Where is the word of the Lord?  let it
come.

17:16. And I am not troubled, following thee for my pastor, and I have
not desired the day of man, thou knowest.  That which went out of my
lips, hath been right in thy sight.

17:17. Be not thou a terror unto me, thou art my hope in the day of
affliction.

17:18. Let them be confounded that persecute me, and let not me be
confounded:  let them be afraid, and let not me be afraid:  bring upon
them the day of affliction, and with a double destruction, destroy
them.

Let them be confounded, etc. . .Such expressions as these in the
writings of the prophets, are not to be understood as imprecations
proceeding from malice or desire of revenge:  but as prophetic
predictions of evils that were about to fall upon impenitent sinners,
and approbations of the ways of divine justice.

17:19. Thus saith the Lord to me:  Go, and stand in the gate of the
children of the people, by which the kings of Juda come in, and go out,
and in all the gates of Jerusalem:

17:20. And thou shalt say to them:  Hear the word of the Lord, ye kings
of Juda, and al Juda, and all the inhabitants of Jerusalem, that enter
in by these gates.

17:21. Thus saith the Lord:  Take heed to your souls, and carry no
burdens on the sabbath day:  and bring them not in by the gates of
Jerusalem.

17:22. And do not bring burdens out of your houses on the sabbath day,
neither do ye any work:  sanctify the sabbath day, as I commanded your
fathers.

17:23. But they did not hear, nor incline their ear:  but hardened their
neck, that they might not hear me, and might not receive instruction.

17:24. And it shall come to pass:  if you will hearken to me, saith the
Lord, to bring in no burdens by the gates of this city on the sabbath
day:  and if you will sanctify the sabbath day, to do no work therein:

17:25. Then shall there enter in by the gates of this city kings and
princes, sitting upon the throne of David, and riding in chariots and
on horses, they and their princes, the men of Juda, and the inhabitants
of Jerusalem:  and this city shall be inhabited for ever.

17:26. And they shall come from the cities of Juda, and from the places
round about Jerusalem, and from the land of Benjamin, and from the
plains, and from the mountains, and from the south, bringing
holocausts, and victims, and sacrifices, and frankincense, and they
shall bring in an offering into the house of the Lord.

17:27. But if you will not hearken to me, to sanctify the sabbath day,
and not to carry burdens, and not to bring them in by the gates of
Jerusalem on the sabbath day:  I will kindle a fire in the gates
thereof, and it shall devour the houses of Jerusalem, and it shall not
be quenched.



Jeremias Chapter 18


As the clay in the hand of the potter, so is Israel in God's hand.  He
pardoneth penitents, and punisheth the obstinate.  They conspire against
Jeremias, for which he denounceth to them the miseries that hang over
them.

18:1. The word that came to Jeremias from the Lord, saying:

18:2. Arise, and go down into the potter's house, and there thou shalt
hear my words.

18:3. And I went down into the potter's house, and behold he was doing
a work on the wheel.

18:4. And the vessel was broken which he was making of clay with his
hands:  and turning he made another vessel, as it seemed good in his
eyes to make it.

18:5. Then the word of the Lord came to me, saying:

18:6. Cannot I do with you, as this potter, O house of Israel, saith
the Lord?  behold as clay is in the hand of the potter, so are you in my
hand, O house of Israel.

18:7. I will suddenly speak against a nation, and against a kingdom, to
root out, and to pull down, and to destroy it.

18:8. If that nation against which I have spoken, shall repent of their
evil, I also will repent of the evil that I have thought to do to them.

18:9. And I will suddenly speak of a nation and of a kingdom, to build
up and plant it.

18:10. If it shall do evil in my sight, that it obey not my voice:  I
will repent of the good that I have spoken to do unto it.

18:11. Now therefore tell the men of Juda, and the inhabitants of
Jerusalem, saying:  Thus saith the Lord:  Behold I frame evil against
you, and devise a device against you:  let every man of you return from
his evil way, and make ye your ways and your doings good.

18:12. And they said; We have no hopes:  for we will go after our own
thoughts, and we will do every one according to the perverseness of his
evil heart.

18:13. Therefore thus saith the Lord:  Ask among the nations:  Who hath
heard such horrible things, as the virgin of Israel hath done to
excess?

18:14. Shall the snow of Libanus fail from the rock of the field?  or
can the cold waters that gush out and run down, be taken away?

18:15. Because my people have forgotten me, sacrificing in vain, and
stumbling in their ways, in ancient paths, to walk by them in a way not
trodden:

18:16. That their land might be given up to desolation, and to a
perpetual hissing:  every one that shall pass by it, shall be
astonished, and wag his head.

18:17. As a burning wind will I scatter them before the enemy:  I will
shew them the back, and not the face, in the day of their destruction.

18:18. And they said:  Come, and let us invent devices against Jeremias:
for the law shall not perish from the priest, nor counsel from the
wise, nor the word from the prophet:  come, and let us strike him with
the tongue, and let us give no heed to all his words.

18:19. Give heed to me, O Lord, and hear the voice of my adversaries.

18:20. Shall evil be rendered for good, because they have digged a pit
for my soul?  Remember that I have stood in thy sight, to speak good for
them, and to turn away thy indignation from them.

Remember, etc. . .This is spoken in the person of Christ, persecuted by
the Jews, and prophetically denouncing the evils that should fall upon
them in punishment of their crimes.

18:21. Therefore deliver up their children to famine, and bring them
into the hands of the sword:  let their wives be bereaved of children
and widows:  and let their husbands be slain by death:  let their young
men be stabbed with the sword in battle.

18:22. Let a cry be heard out of their houses:  for thou shalt bring the
robber upon them suddenly:  because they have digged a pit to take me,
and have hid snares for my feet.

18:23. But thou, O Lord, knowest all their counsel against me unto
death:  not their iniquity, and let not their sin be blotted out from
thy sight:  let them be overthrown before thy eyes, in the time of thy
wrath do thou destroy them.



Jeremias Chapter 19


Under the type of breaking a potter's vessel, the prophet foresheweth
the desolation of the Jews for their sins.

19:1. Thus saith the Lord:  Go, and take a potter's earthen bottle, and
take of the ancients of the people, and of the ancients of the priests:

19:2. And go forth into the valley of the son of Ennom, which is by the
entry of the earthen gate:  and there thou shalt proclaim the words that
I shall tell thee.

19:3. And thou shalt say:  Hear the word of the Lord, O ye kings of
Juda, and ye inhabitants of Jerusalem:  Thus saith the Lord of hosts,
the God of Israel:  Behold I will bring an affliction upon this place:
so that whosoever shall hear it, his ears shall tingle:

19:4. Because they have forsaken me, and have profaned this place :  and
have sacrificed therein to strange gods, whom neither they nor their
fathers knew, nor the kings of Juda:  and they have filled this place
with the blood of innocents.

19:5. And they have built the high places of Baalim, to burn their
children with fire for a holocaust to Baalim:  which I did not command,
nor speak of, neither did it once come into my mind.

19:6. Therefore behold the days come, saith the Lord, that this place
shall no more be called Topheth, nor the valley of the son of Ennom,
but the valley of slaughter.

19:7. And I will defeat the counsel of Juda and of Jerusalem in this
place:  and I will destroy them with the sword in the sight of their
enemies, and by the hands of them that seek their lives:  and I will
give their carcasses to be meat for the fowls of the air, and for the
beasts of the earth.

19:8. And I will make this city an astonishment, and a hissing:  every
one that shall pass by it, shall be astonished, and shall hiss because
of all the plagues thereof.

19:9. And I will feed them with the flesh of their sons, and with the
flesh of their daughters:  and they shall eat every one the flesh of his
friend in the siege, and in the distress wherewith their enemies, and
they that seek their lives, shall straiten them.

19:10. And thou shalt break the bottle in the sight of the men that
shall go with thee.

19:11. And thou shalt say to them:  Thus saith the Lord of hosts:  Even
so will I break this people, and this city, as the potter's vessel is
broken, which cannot be made whole again:  and they shall be buried in
Topheth, because there is no other place to bury in.

19:12. Thus will I do to this place, saith the Lord, and to the
inhabitants thereof:  and I will make this city as Topheth.

19:13. And the houses of Jerusalem, and the houses of the kings of Juda
shall be unclean as the place of Topheth:  all the houses upon whose
roofs they have sacrificed to all the host of heaven, and have poured
out drink offerings to strange gods.

19:14. Then Jeremias came from Topheth, whither the Lord had sent him
to prophesy, and he stood in the court of the house of the Lord, and
said to all the people:

19:15. Thus saith the Lord of hosts, the God of Israel:  Behold I will
bring in upon this city, and upon all the cities thereof all the evils
that I have spoken against it:  because they have hardened their necks,
that they might not hear my words.



Jeremias Chapter 20


The prophet is persecuted:  he denounces captivity to his persecutors,
and bemoans himself.

20:1. Now Phassur the son of Emmer, the priest, who was appointed chief
in the house of the Lord, heard Jeremias prophesying these words.

20:2. And Phassur struck Jeremias the prophet, and put him in the
stocks, that were in the upper gate of Benjamin, in the house of the
Lord.

20:3. And when it was light the next day, Phassur brought Jeremias out
of the stocks.  And Jeremias said to him:  The Lord hath not called thy
name Phassur, but fear on every side.

Phassur. . .This name signifies increase and principality:  and therefore
is here changed to Magor-Missabib, or fear on every side:  to denote the
evils that should come upon him in punishment of his opposing the word
of God.

20:4. For thus saith the Lord:  Behold I will deliver thee up to fear,
thee and all thy friends:  and they shall fall by the sword of their
enemies, and thy eyes shall see it, and I will give all Juda into the
hand of the king of Babylon:  and he shall carry them away to Babylon,
and shall strike them with the sword.

20:5. And I will give all the substance of this city, and all its
labour, and every precious thing thereof, and all the treasures of the
kings of Juda will I give into the hands of their enemies:  and they
shall pillage them, and take them away, and carry them to Babylon.

20:6. But thou Phassur, and all that dwell in thy house, shall go into
captivity, and thou shalt go to Babylon, and there thou shalt die, and
there thou shalt be buried, thou and all thy friends, to whom thou hast
prophesied a lie.

20:7. Thou hast deceived me, O Lord, and I am deceived:  thou hast been
stronger than I, and thou hast prevailed.  I am become a laughingstock
all the day, all scoff at me.

Thou hast deceived, etc. . .The meaning of the prophet, is not to charge
God with any untruth; but what he calls deceiving, was only the
concealing from him, when he accepted of the prophetical commission,
the greatness of the evils which the execution of that commission was
to bring upon him.

20:8. For I am speaking now this long time, crying out against
iniquity, and I often proclaim devastation:  and the word of the Lord is
made a reproach to me, and a derision all the day.

20:9. Then I said:  I will not make mention of him, nor speak any more
in his name:  and there came in my heart as a burning fire, shut up in
my bones, and I was wearied, not being able to bear it.

20:10. For I heard the reproaches of many, and terror on every side:
Persecute him, and let us persecute him:  from all the men that were my
familiars, and continued at my side:  if by any means he may be
deceived, and we may prevail against him, and be revenged on him.

20:11. But the Lord is with me as a strong warrior:  therefore they that
persecute me shall fall, and shall be weak:  they shall be greatly
confounded, because they have not understood the everlasting reproach,
which never shall be effaced.

20:12. And thou, O Lord of hosts, prover of the just, who seest the
reins and the heart:  let me see, I beseech thee, thy vengeance on them:
for to thee I have laid open my cause.

Let me see, etc. . .This prayer proceeded not from hatred or ill will,
but zeal of justice.

20:13. Sing ye to the Lord, praise the Lord:  because he hath delivered
the soul of the poor out of the hand of the wicked.

20:14. Cursed be the day wherein I was born:  let not the day in which
my mother bore me, be blessed.

Cursed be the day, etc. . .In these, and the following words of the
prophet, there is a certain figure of speech to express with more
energy the greatness of the evils to which his birth had exposed him.

20:15. Cursed be the man that brought the tidings to my father, saying:
A man child is born to thee:  and made him greatly rejoice.

20:16. Let that man be as the cities which the Lord hath overthrown,
and hath not repented:  let him hear a cry in the morning, and howling
at noontide:

20:17. Who slew me not from the womb, that my mother might have been my
grave, and her womb an everlasting conception.

20:18. Why came I out of the womb, to see labour and sorrow, and that
my days should be spent in confusion?



Jeremias Chapter 21


The prophet's answer to the messengers of Sedecias, when Jerusalem was
besieged.

21:1. The word that came to Jeremias from the Lord, when king Sedecias
sent unto him Phassur, the son of Melchias, and Sophonias, the son of
Maasias the priest, saying:

21:2. Inquire of the Lord for us, for Nabuchodonosor king of Babylon
maketh war against us:  if so be the Lord will deal with us according to
all his wonderful works, that he may depart from us.

21:3. And Jeremias said to them:  Thus shall you say to Sedecias:

21:4. Thus saith the Lord, the God of Israel:  Behold I will turn back
the weapons of war that are in your hands, and with which you fight
against the king of Babylon, and the Chaldeans, that besiege you round
about the walls:  and I will gather them together in the midst of this
city.

21:5. And I myself will fight against you with an outstretched hand,
and with a strong arm, and in fury, and in indignation, and in great
wrath.

21:6. And I will strike the inhabitants of this city, men and beasts
shall die of a great pestilence.

21:7. And after this, saith the Lord, I will give Sedecias the king of
Juda, and his servants, and his people, and such as are left in this
city from the pestilence, and the sword, and the famine, into the hand
of Nabuchodonosor the king of Babylon, and into the hand of their
enemies, and into the hand of them that seek their life, and he shall
strike them with the edge of the sword, and he shall not be moved to
pity, nor spare them, nor shew mercy to them.

21:8. And to this people thou shalt say:  Thus saith the Lord:  Behold I
set before you the way of life, and the way of death.

21:9. He that shall abide in this city, shall die by the sword, and by
the famine, and by the pestilence:  but he that shall go out and flee
over to the Chaldeans, that besiege you, shall live, and his life shall
be to him as a spoil.

21:10. For I have set my face against this city for evil, and not for
good, saith the Lord:  it shall be given into the hand of the king of
Babylon, and he shall burn it with fire.

21:11. And to the house of the king of Juda:  Hear ye the word of the
Lord,

21:12. O house of David, thus saith the Lord:  Judge ye judgment in the
morning, and deliver him that is oppressed by violence out of the hand
of the oppressor:  lest my indignation go forth like a fire, and be
kindled, and there be none to quench it, because of the evil of your
ways.

21:13. Behold I come to thee that dwellest in a valley upon a rock
above a plain, saith the Lord:  and you say:  Who shall strike us and who
shall enter into our houses?

To thee that dwellest, etc. . .He speaks to Jerusalem, confiding in the
strength of her situation upon rocks, surrounded with a deep valley.

21:14. But I will visit upon you according to the fruit of your doings,
saith the Lord:  and I will kindle a fire in the forest thereof:  and it
shall devour all things round about it.



Jeremias Chapter 22


An exhortation both to king and people to return of God.  The sentence
of God upon Joachaz, Joakim, and Jechonias.

22:1. Thus saith the Lord:  Go down to the house of the king of Juda,
and there thou shalt speak this word,

Go down, etc. . .The contents of this chapter are of a more ancient date
than those of the foregoing chapter:  for the order of time is not
always observed in the writings of the prophets.

22:2. And thou shalt say:  Hear the word of the Lord, king of Juda, that
sittest upon the throne of David:  thou and thy servants, and thy
people, who enter in by these gates.

22:3. Thus saith the Lord:  Execute judgment and justice, and deliver
him that is oppressed out of the hand of the oppressor:  and afflict not
the stranger, the fatherless, and the widow, nor oppress them unjustly:
and shed not innocent blood in this place.

22:4. For if you will do this thing indeed, then shall there enter in
by the gates of this house, kings of the race of David sitting upon his
throne, and riding in chariots and on horses, they and their servants,
and their people.

22:5. But if you will not hearken to these words:  I swear by myself,
saith the Lord, that this house shall become a desolation.

22:6. For thus saith the Lord to the house of the king of Juda:  Thou
art to me Galaad the head of Libanus:  yet surely I will make thee a
wilderness, and cities not habitable.

Galaad the head of Libanus. . .By Galaad, a rich and fruitful country,
is here signified the royal palace of the kings of the house of David:
by Libanus, a high mountain abounding in cedar trees, the populous city
of Jerusalem.

22:7. And I will prepare against thee the destroyer and his weapons:
and they shall cut down thy chosen cedars, and shall cast them headlong
into the fire.

Prepare. . .Literally, sanctify.

22:8. And many nations shall pass by this city:  and they shall say
every man to his neighbour:  Why hath the Lord done so to this great
city?

22:9. And they shall answer:  Because they have forsaken the covenant of
the Lord their God, and have adored strange gods, and served them.

22:10. Weep not for him that is dead, nor bemoan him with your tears:
lament him that goeth away, for he shall return no more, nor see his
native country.

Weep not for him that is dead, etc. . .He means the good king Josias,
who by death was taken away, so as not to see the miseries of his
country.--Ibid.  Him that goeth away. . .Viz., sellum, alias Joachaz, who
was carried captive into Egypt.

22:11. For thus saith the Lord to Sellum the son of Josias the king of
Juda, who reigned instead of his father, who went forth out of this
place:  He shall return hither no more:

22:12. But in the place, to which I have removed him, there shall he
die, and he shall not see this land any more.

22:13. Woe to him that buildeth up his house by injustice, and his
chambers not in judgment:  that will oppress his friend without cause,
and will not pay him his wages.

22:14. Who saith:  I will build me a wide house, and large chambers:  who
openeth to himself windows, and maketh roofs of cedar, and painteth
them with vermilion.

22:15. Shalt thou reign, because thou comparest thyself to the cedar?
did not thy father eat and drink, and do judgment and justice, and it
was then well with him?

22:16. He judged the cause of the poor and needy for his own good:  was
it not therefore because he knew me, saith the Lord?

22:17. But thy eyes and thy heart are set upon covetousness, and upon
shedding innocent blood, and upon oppression, and running after evil
works.

22:18. Therefore thus saith the Lord concerning Joakim the son of
Josias king of Juda:  They shall not mourn for him, Alas, my brother,
and, Alas, sister:  they shall not lament for him, Alas, my lord, or,
Alas, the noble one.

22:19. He shall be buried with the burial of an ass, rotten and cast
forth without the gates of Jerusalem.

22:20. Go up to Libanus, and cry:  and lift up thy voice in Basan, and
cry to them that pass by, for all thy lovers are destroyed.

22:21. I spoke to thee in thy prosperity:  and thou saidst:  I will not
hear:  this hath been thy way from thy youth, because thou hast not
heard my voice.

22:22. The wind shall feed all thy pastors, and thy lovers shall go
into captivity and then shalt thou be confounded, and ashamed of all
thy wickedness.

22:23. Thou that sittest in Libanus, and makest thy nest in the cedars,
how hast thou mourned when sorrows came upon thee, as the pains of a
woman in labour?

22:24. As I live, saith the Lord, if Jechonias the son of Joakim the
king of Juda were a ring on my right hand, I would pluck him thence.

22:25. And I will give thee into the hand of them that seek thy life,
and into the hand of them whose face thou fearest, and into the hand of
Nabuchodonosor king of Babylon, and into the hand of the Chaldeans.

22:26. And I will send thee, and thy mother that bore thee, into a
strange country, in which you were not born, and there you shall die:

22:27. And they shall not return into the land, whereunto they lift up
their mind to return thither.

22:28. Is this man Jechonias an earthen and a broken vessel?  is he a
vessel wherein is no pleasure?  why are they cast out, he and his seed,
and are cast into a land which they know not?

22:29. O earth, earth, earth, hear the word of the Lord.

22:30. Thus saith the Lord:  Write this man barren, a man that shall not
prosper in his days:  for there shall not be a man of his seed that
shall sit upon the throne of David, and have power any more in Juda.

Write this man barren. . .That is, childless:  not that he had no
children, but that his children should never sit on the throne of Juda.



Jeremias Chapter 23


God reproves evil governors; and promises to send good pastors; and
Christ himself the prince of the pastors.  He inveighs against false
prophets preaching without being sent.

23:1. Woe to the pastors, that destroy and tear the sheep of my
pasture, saith the Lord.

23:2. Therefore thus saith the Lord the God of Israel to the pastors
that feed my people:  You have scattered my flock, and driven them away,
and have not visited them:  behold I will visit upon you for the evil of
your doings, saith the Lord.

23:3. And I will gather together the remnant of my flock, out of all
the lands into which I have cast them out:  and I will make them return
to their own fields, and they shall increase and be multiplied.

23:4. And I will set up pastors over them, and they shall feed them:
they shall fear no more, and they shall not be dismayed:  and none shall
be wanting of their number, saith the Lord.

23:5. Behold the days come, saith the Lord, and I will raise up to
David a just branch:  and a king shall reign, and shall be wise:  and
shall execute judgment and justice in the earth.

23:6. In those days shall Juda be saved, and Israel shall dwell
confidently:  and this is the name that they shall call him:  The Lord
our just one.

23:7. Therefore behold the days come, saith the Lord, and they shall
say no more:  The Lord liveth, who brought up the children of Israel out
of the land of Egypt:

23:8. But, The Lord liveth, who hath brought out, and brought hither
the seed of the house of Israel from the land of the north, and out of
all the lands, to which I had cast them forth:  and they shall dwell in
their own land.

23:9. To the prophets:  My heart is broken within me, all my bones
tremble:  I am become as a drunken man, and as a man full of wine, at
the presence of the Lord, and at the presence of his holy words.

23:10. Because the land is full of adulterers, because the land hath
mourned by reason of cursing, the fields of the desert are dried up:
and their course is become evil, and their strength unlike.

23:11. For the prophet and the priest are defiled:  and in my house I
have found their wickedness, saith the Lord.

23:12. Therefore their way shall be as a slippery way in the dark:  for
they shall be driven on, and fall therein:  for I will bring evils upon
them, the year of their visitation, saith the Lord.

23:13. And I have seen folly in the prophets of Samaria:  they
prophesied in Baal and deceived my people Israel.

23:14. And I have seen the likeness of adulterers, and the way of lying
in the prophets of Jerusalem:  and they strengthened the hands of the
wicked, that no man should return from his evil doings, they are all
become unto me as Sodom, and the inhabitants thereof as Gomorrha.

23:15. Therefore thus saith the Lord of hosts to the prophets:  Behold I
will feed them with wormwood, and will give them gall to drink:  for
from the prophets of Jerusalem corruption is gone forth into all the
land.

23:16. Thus saith the Lord of hosts:  Hearken not to the words of the
prophets that prophesy to you, and deceive you:  they speak a vision of
their own heart, and not out of the mouth of the Lord.

23:17. They say to them that blaspheme me:  The Lord hath said:  You
shall have peace:  and to every one that walketh in the perverseness of
his own heart, they have said:  No evil shall come upon you.

23:18. For who hath stood in the counsel of the Lord, and hath seen and
heard his word?  Who hath considered his word and heard it?

23:19. Behold the whirlwind of the Lord's indignation shall come forth,
and a tempest shall break out and come upon the head of the wicked.

23:20. The wrath of the Lord shall not return till he execute it, and
till he accomplish the thought of his heart:  in the latter days you
shall understand his counsel.

23:21. I did not send prophets, yet they ran:  I have not spoken to
them, yet they prophesied.

23:22. If they had stood in my counsel, and had made my words known to
my people, I should have turned them from their evil way, and from
their wicked doings.

23:23. Am I, think ye, a God at hand, saith the Lord, and not a God
afar off?

23:24. Shall a man be hid in secret places, and I not see him, saith
the Lord?  do not I fill heaven and earth, saith the Lord?

23:25. I have heard what the prophets said, that prophesy lies in my
name, and say:  I have dreamed, I have dreamed.

23:26. How long shall this be in the heart of the prophets that
prophesy lies, and that prophesy the delusions of their own heart?

23:27. Who seek to make my people forget my name through their dreams,
which they tell every man to his neighbour:  as their fathers forgot my
name for Baal.

23:28. The prophet that hath a dream, let him tell a dream:  and he that
hath my word, let him speak my word with truth:  what hath the chaff to
do with the wheat, saith the Lord?

23:29. Are not my words as a fire, saith the Lord:  and as a hammer that
breaketh the rock in pieces?

23:30. Therefore behold I am against the prophets, saith the Lord:  who
steal my words every one from his neighbour.

23:31. Behold I am against the prophets, saith the Lord:  who use their
tongues, and say:  The Lord saith it.

23:32. Behold I am against the prophets that have lying dreams, saith
the Lord:  and tell them, and cause my people to err by their lying, and
by their wonders:  when I sent them not, nor commanded them, who have
not profited this people at all, saith the Lord.

23:33. If therefore this people, or the prophet, or the priest shall
ask thee, saying:  What is the burden of the Lord?  thou shalt say to
them:  You are the burden:  for I will cast you away, saith the Lord.

23:34. And as for the prophet, and the priest, and the people that
shall say:  The burden of the Lord:  I will visit upon that man, and upon
his house.

Burden of the Lord. . .This expression is here rejected and disallowed,
at least for those times:  because it was then used in mockery and
contempt by the false prophets, and unbelieving people, who ridiculed
the repeated threats of Jeremias under the name of his burdens.

23:35. Thus shall you say every one to his neighbour, and to his
brother, What hath the Lord answered?  and what hath the Lord spoken?

23:36. And the burden of the Lord shall be mentioned no more, for every
man's word shall be his burden:  for you have perverted the words of the
living God, of the Lord of hosts our God.

23:37. Thus shalt thou say to the prophet:  What hath the Lord answered
thee?  and what hath the Lord spoken?

23:38. But if you shall say:  The burden of the Lord:  therefore thus
saith the Lord:  Because you have said this word:  The burden of the
Lord:  and I have sent to you, saying:  Say not, The burden of the Lord:

23:39. Therefore behold I will take you away carrying you, and will
forsake you, and the city which I gave to you, and to your fathers, out
of my presence.

Out of my presence. . .That is, the Lord declares that out of his
presence he will cast them, and bring them to captivity for their
transgressions.

23:40. And I will bring an everlasting reproach upon you, and a
perpetual shame which shall never be forgotten.



Jeremias Chapter 24


Under the type of good and bad figs, he foretells the restoration of
the Jews that had been carried away captive with Jechonias, and the
desolation of those that were left behind.

24:1. The Lord shewed me:  and behold two baskets full of figs, set
before the temple of the Lord:  after that Nabuchodonosor king of
Babylon had carried away Jechonias the son of Joakim the king of Juda,
and his chief men, and the craftsmen, and engravers of Jerusalem, and
had brought them to Babylon.

24:2. One basket had very good figs, like the figs of the first season:
and the other basket had very bad figs, which could not be eaten,
because they were bad.

24:3. And the Lord said to me:  What seest thou, Jeremias?  And I said:
Figs, the good figs, very good:  and the bad figs, very bad, which
cannot be eaten because they are bad.

24:4. And the word of the Lord came to me, saying:

24:5. Thus saith the Lord the God of Israel:  Like these good figs, so
will I regard the captives of Juda, whom I have sent forth out of this
place into the land of the Chaldeans, for their good.

24:6. And I will set my eyes upon them to be pacified, and I will bring
them again into this land:  and I will build them up, and not pull them
down:  and I will plant them, and not pluck them up.

24:7. And I will give them a heart to know me, that I am the Lord:  and
they shall be my people, and I will be their God:  because they shall
return to me with their whole heart.

24:8. And as the very bad figs, that cannot be eaten, because they are
bad:  thus saith the Lord:  So will I give Sedecias the king of Juda, and
his princes, and the residue of Jerusalem, that have remained in this
city, and that dwell in the land of Egypt.

24:9. And I will deliver them up to vexation, and affliction, to all
the kingdoms of the earth:  to be a reproach, and a byword, and a
proverb, and to be a curse in all places, to which I have cast them
out.

24:10. And I will send among them the sword, and the famine, and the
pestilence:  till they be consumed out of the land which I gave to them,
and their fathers.



Jeremias Chapter 25


The prophet foretells the seventy years captivity; after that the
destruction of Babylon, and other nations.

25:1. The word that came to Jeremias concerning all the people of Juda,
in the fourth year of Joakim the son of Josias king of Juda, (the same
is the first year of Nabuchodonosor king of Babylon,)

25:2. Which Jeremias the prophet spoke to all the people of Juda, and
to all the inhabitants of Jerusalem, saying:

25:3. From the thirteenth year of Josias the son of Ammon king of Juda
until this day:  this is the three and twentieth year, the word of the
Lord hath come to me, and I have spoken to you, rising before day, and
speaking, and you have not hearkened.

25:4. And the Lord hath sent to you all his servants the prophets,
rising early, and sending, and you have not hearkened, nor inclined
your ears to hear.

25:5. When he said:  Return ye, every one from his evil way, and from
your wicked devices, and you shall dwell in the land which the Lord
hath given to you, and your fathers for ever and ever.

25:6. And go not after strange gods to serve them, and adore them:  nor
provoke me to wrath by the works of your hands, and I will not afflict
you.

25:7. And you have not heard me, saith the Lord, that you might provoke
me to anger with the works of your hands, to your own hurt.

25:8. Therefore thus saith the Lord of hosts:  Because you have not
heard my words:

25:9. Behold I will send, and take all the kindreds of the north, saith
the Lord, and Nabuchodonosor the king of Babylon my servant:  and I will
bring them against this land, and against the inhabitants thereof, and
against all the nations that are round about it:  and I will destroy
them, and make them an astonishment and a hissing, and perpetual
desolations.

My servant. . .So this wicked king is here called; because God made him
his instrument in punishing the sins of his people.

25:10. And I will take away from them the voice of mirth, and the voice
of gladness, the voice of the bridegroom, and the voice of the bride,
the sound of the mill and the light of the lamp.

25:11. And all this land shall be a desolation, and an astonishment:
and all these nations shall serve the king of Babylon seventy years.

25:12. And when the seventy years shall be expired, I will punish the
king of Babylon, and that nation, saith the Lord, for their iniquity,
and the land of the Chaldeans:  and I will make it perpetual
desolations.

Punish. . .Literally, visit upon.

25:13. And I will bring upon that land all my words, that I have spoken
against it, all that is written in this book, all that Jeremias hath
prophesied against all nations:

25:14. For they have served them, whereas they were many nations, and
great kings:  and I will repay them according to their deeds, and
according to the works of their hands.

25:15. For thus saith the Lord of hosts the God of Israel:  Take the cup
of wine of this fury at my hand:  and thou shalt make all the nations to
drink thereof, into which I shall send thee.

25:16. And they shall drink, and be troubled, and be mad because of the
sword, which I shall send among them.

25:17. And I took the cup at the hand of the Lord, and I presented it
to all the nations to drink of it, to which the Lord sent me:

25:18. To wit, Jerusalem, and the cities of Juda, and the kings
thereof, and the princes thereof:  to make them a desolation, and an
astonishment, and a hissing, and a curse, as it is at this day.

25:19. Pharao the king of Egypt, and his servants, and his princes, and
all his people,

25:20. And all in general:  all the kings of the land of Ausitis, and
all the kings of the land of the Philistines, and Ascalon, and Gaza,
and Accaron, and the remnant of Azotus.

25:21. And Edom, and Moab, and the children of Ammon.

25:22. And all the kings of Tyre, and all the kings of Sidon:  and the
kings of the land of the islands that are beyond the sea.

25:23. And Dedan, and Thema, and Buz, and all that have their hair cut
round.

25:24. And all the kings of Arabia, and all the kings of the west, that
dwell in the desert.

25:25. And all the kings of Zambri, and all the kings of Elam, and all
the kings of the Medes:

25:26. And all the kings of the north far and near, every one against
his brother:  and all the kingdoms of the earth, which are upon the face
thereof:  and the king of Sesac shall drink after them.

Sesac. . .That is, Babel, or Babylon; which after bringing all these
people under her yoke, should quickly fall and be destroyed herself.

25:27. And thou shalt say to them:  Thus saith the Lord of hosts the God
of Israel:  Drink ye, and be drunken, and vomit:  and fall, and rise no
more, because of the sword, which I shall send among you.

25:28. And if they refuse to take the cup at thy hand to drink, thou
shalt say to them:  Thus saith the Lord of hosts:  Drinking you shall
drink:

25:29. For behold I begin to bring evil on the city wherein my name is
called upon:  and shall you be as innocent and escape free?  you shall
not escape free:  for I will call for the sword upon all the inhabitants
of the earth, saith the Lord of hosts.

25:30. And thou shalt prophesy unto them all these words, and thou
shalt say to them:  I The Lord shall roar from on high, and shall utter
his voice from his holy habitation:  roaring he shall roar upon the
place of his beauty:  the shout as it were of them that tread grapes
shall be given out against all the inhabitants of the earth.

25:31. The noise is come even to the ends of the earth:  for the Lord
entereth into judgment with the nations:  he entereth into judgment with
all flesh; the wicked I have delivered up to the sword, saith the Lord.

25:32. Thus saith the Lord of hosts:  Behold evil shall go forth from
nation to nation:  and a great whirlwind shall go forth from the ends of
the earth.

25:33. And the slain of the Lord shall be at that day from one end of
the earth even to the other end thereof:  they shall not be lamented,
and they shall not be gathered up, nor buried:  they shall lie as dung
upon the face of the earth.

25:34. Howl, ye shepherds, and cry:  and sprinkle yourselves with ashes,
ye leaders of the flock:  for the days of your slaughter and your
dispersion are accomplished, and you shall fall like precious vessels.

25:35. And the shepherds shall have no way to flee, nor the leaders of
the flock to save themselves.

25:36. A voice of the cry of the shepherds, and a howling of the
principal of the flock:  because the Lord hath wasted their pastures.

25:37. And the fields of peace have been silent because of the fierce
anger of the Lord.

25:38. He hath forsaken his covert as the lion, for the land is laid
waste because of the wrath of the dove, and because of the fierce anger
of the Lord.

The dove. . .This is commonly understood of Nabuchodonosor, whose
military standard, it is said, was a dove.  But the Hebrew word Jonah,
which is here rendered a dove, may also signify a waster or oppressor,
which name better agrees to that unmerciful prince; or by comparison,
as a dove's flight is the swiftest, so would their destruction come
upon them.



Jeremias Chapter 26


The prophet is apprehended and accused by the priests:  but discharged
by the princes.

26:1. In the beginning of the reign of Joakim the son of Josias king of
Juda, came this word from the Lord, saying:

26:2. Thus saith the Lord:  stand in the court of the house of the Lord,
and speak to all the cities of Juda, out of which they come, to adore
in the house of the Lord, all the words which I have commanded thee to
speak unto them:  leave not out one word.

26:3. If so be they will hearken and be converted every one from his
evil way; that I may repent me of the evil that I think to do unto them
for the wickedness of their doings.

26:4. And thou shalt say to them:  Thus saith the Lord:  If you will not
hearken to me to walk in my law, which I have given you:

26:5. To give ear to the words of my servants the prophets, whom I sent
to you rising up early:  and sending, and you have not hearkened:

26:6. I will make this house like Silo:  and I will make this city a
curse to all the nations of the earth.

26:7. And the priests, and the prophets, and all the people heard
Jeremias speaking these words in the house of the Lord.

26:8. And when Jeremias had made an end of speaking all that the Lord
had commanded him to speak to all the people, the priests, and the
prophets, and all the people laid hold on him, saying:  Let him be put
to death.

26:9. Why hath he prophesied in the name of the Lord, saying:  This
house shall be like Silo; and this city shall be made desolate, without
an inhabitant?  And all the people were gathered together against
Jeremias in the house of the Lord.

26:10. And the princes of Juda heard these words:  and they went up from
the king's house into the house of the Lord, and sat in the entry of
the new gate of the house of the Lord.

26:11. And the priests and the prophets spoke to the princes, and to
all the people, saying:  The judgment of death is for this man:  because
he hath prophesied against this city, as you have heard with your ears.

26:12. Then Jeremias spoke to all the princes, and to all the people,
saying:  The Lord sent me to prophesy concerning this house, and
concerning this city all the words that you have heard.

26:13. Now therefore amend your ways, and your doings, and hearken to
the voice of the Lord your God:  and the Lord will repent him of the
evil that he hath spoken against you.

26:14. But as for me, behold I am in your hands:  do with me what is
good and right in your eyes:

26:15. But know ye, and understand, that if you put me to death, you
will shed innocent blood against your own selves, and against this
city, and the inhabitants thereof.  For in truth the Lord sent me to
you, to speak all these words in your hearing.

26:16. Then the princes, and all the people said to the priests, and to
the prophets:  There is no judgment of death for this man:  for he hath
spoken to us in the name of the Lord our God.

26:17. And some of the ancients of the land rose up:  and they spoke to
all the assembly of the people, saying:

26:18. Micheas of Morasthi was a prophet in the days of Ezechias king
of Juda, and he spoke to all the people of Juda, saying:  Thus saith the
Lord of hosts:  Sion shall be ploughed like a field, and Jerusalem shall
be a heap of stones:  and the mountain of the house the high places of
woods.

26:19. Did Ezechias king of Juda, and all Juda, condemn him to death?
did they not fear the Lord, and beseech the face of the Lord:  and the
Lord repented of the evil that he had spoken against them?  therefore we
are doing a great evil against our souls.

26:20. There was also a man that prophesied in the name of the Lord,
Urias the son of Semei of Cariathiarim:  and he prophesied against this
city, and against this land, according to all the words of Jeremias.

26:21. And Joakim, and all his men in power, and his princes heard
these words:  and the king sought to put him to death.  And Urias heard
it, and was afraid, and fled and went into Egypt.

26:22. And king Joakim sent men into Egypt, Elnathan the son of
Achobor, and men with him into Egypt.

26:23. And they brought Urias out of Egypt:  and brought him to king
Joakim, and he slew him with the sword:  and he cast his dead body into
the graves of the common people.

26:24. So the hand of Ahicam the son of Saphan was with Jeremias, that
he should not be delivered into the hands of the people, to put him to
death.



Jeremias Chapter 27


The prophet sends chains to divers kings, signifying that they must
bend their necks under the yoke of the king of Babylon.  The vessels of
the temple shall not be brought back till all the rest are carried
away.

27:1. In the beginning of the reign of Joakim the son of Josias king of
Juda, this word came to Jeremias from the Lord, saying:

Joakim. . .This revelation was made to the prophet in the beginning of
the reign of Joakim:  but the bands were not sent to the princes here
named before the reign of Sedecias, ver. 3.

27:2. Thus saith the Lord to me:  Make thee bands, and chains:  and thou
shalt put them on thy neck.

27:3. And thou shalt send them to the king of Edom, and to the king of
Moab, and to the king of the children of Ammon, and to the king of
Tyre, and to the king of Sidon:  by the hand of the messengers that are
come to Jerusalem to Sedecias the king of Juda.

27:4. And thou shalt command them to speak to their masters:  Thus saith
the Lord of hosts the God of Israel:  Thus shall you say to your
masters:

27:5. I made the earth, and the men and the beasts that are upon the
face of the earth, by my great power, and by my stretched out arm:  and
I have given it to whom it seemed good in my eyes.

27:6. And now I have given all these lands into the hand of
Nabuchodonosor king of Babylon my servant:  moreover also the beasts of
the field I have given him to serve him.

27:7. And all nations shall serve him, and his son, and his son's son:
till the time come for his land and himself:  and many nations and great
kings shall serve him.

His son. . .Viz., Evilmerodach; and his son's son, Nabonydus, or
Nabonadius, the Baltassar of Daniel, chap. 5., and the last of the
Chaldean kings.

27:8. But the nation and kingdom that will not serve Nabuchodonosor
king of Babylon, and whosoever will not bend his neck under the yoke of
the king of Babylon:  I will visit upon that nation with the sword, and
with famine, and with pestilence, saith the Lord:  till I consume them
by his hand.

27:9. Therefore hearken not to your prophets, and diviners, and
dreamers, and soothsayers, and sorcerers, that say to you:  You shall
not serve the king of Babylon.

27:10. For they prophesy lies to you:  to remove you far from your
country, and cast you out, and to make you perish.

27:11. But the nation that shall bend down their neck under the yoke of
the king of Babylon, and shall serve him:  I will let them remain in
their own land, saith the Lord:  and they shall till it, and dwell in
it.

27:12. And I spoke to Sedecias the king of Juda according to all these
words, saying:  Bend down your necks under the yoke of the king of
Babylon, and serve him, and his people, and you shall live.

27:13. Why will you die, thou and thy people by the sword, and by
famine, and by the pestilence, as the Lord hath spoken against the
nation that will not serve the king of Babylon?

27:14. Hearken not to the words of the prophets that say to you:  You
shall not serve the king of Babylon:  for they tell you a lie.

27:15. For I have not sent them, saith the Lord:  and they prophesy in
my name falsely:  to drive you out, and that you may perish, both you,
and the prophets that prophesy to you.

27:16. I spoke also to the priests, and to this people, saying:  Thus
saith the Lord:  Hearken not to the words of your prophets, that
prophesy to you, saying:  Behold the vessels of the Lord shall now in a
short time be brought again from Babylon:  for they prophesy a lie unto
you.

27:17. Therefore hearken not to them, but serve the king of Babylon,
that you may live.  Why should this city be given up to desolation?

27:18. But if they be prophets, and the word of the Lord be in them:
let them interpose themselves before the Lord of hosts, that the
vessels which were left in the house of the Lord, and in the house of
the king of Juda, and in Jerusalem, may not go to Babylon.

27:19. For thus saith the Lord of hosts to the pillars, and to the sea,
and to the bases, and to the rest of the vessels that remain in this
city:

27:20. Which Nabuchodonosor the king of Babylon did not take, when he
carried away Jechonias the son of Joakim the king of Juda, from
Jerusalem to Babylon, and all the great men of Juda and Jerusalem.

27:21. For thus saith the Lord of hosts the God of Israel, to the
vessels that are left in the house of the Lord, and in the house of the
king of Juda and Jerusalem:

27:22. They shall be carried to Babylon, and there they shall be until
the day of their visitation, saith the Lord:  and I will cause them to
be brought, and to be restored in this place.



Jeremias Chapter 28


The false prophecy of Hananias:  he dies that same year, as Jeremias
foretold.

28:1. And it came to pass in that year, in the beginning of the reign
of Sedecias king of Juda, in the fourth year, in the fifth month, that
Hananias the son of Azur, a prophet of Gabaon spoke to me, in the house
of the Lord before the priests, and all the people, saying:

28:2. Thus saith the Lord of hosts the God of Israel:  I have broken the
yoke of the king of Babylon.

28:3. As yet two years of days, and I will cause all the vessels of the
house of the Lord to be brought back into this place, which
Nabuchodonosor king of Babylon took away from this place, and carried
them to Babylon.

28:4. And I will bring back to this place Jechonias the son of Joakim
king of Juda, and all the captives of Juda, that are gone to Babylon,
saith the Lord:  for I will break the yoke of the king of Babylon.

28:5. And Jeremias the prophet said to Hananias the prophet in the
presence of the priests, and in the presence of all the people that
stood in the house of the Lord:

28:6. And Jeremias the prophet said:  Amen, the Lord do so:  the Lord
perform thy words, which thou hast prophesied:  that the vessels may be
brought again into the house of the Lord, and all the captives may
return out of Babylon to this place.

28:7. Nevertheless hear this word that I speak in thy ears, and in the
ears of all the people:

28:8. The prophets that have been before me, and before thee from the
beginning, and have prophesied concerning many countries, and
concerning great kingdoms, of war, and of affliction, and of famine.

28:9. The prophet that prophesied peace:  when his word shall come to
pass, the prophet shall be known, whom the hath sent in truth.

28:10. And Hananias the prophet took the chain from the neck of
Jeremias the prophet, and broke it.

28:11. And Hananias spoke in the presence of all the people, saying:
Thus saith the Lord:  Even so will I break the yoke of Nabuchodonosor
the king of Babylon after two full years from off the neck of all the
nations.

28:12. And Jeremias the prophet went his way.  And the word of the Lord
came to Jeremias, after that Hananias the prophet had broken the chain
from off the neck of Jeremias the prophet, saying:

28:13. Go, and tell Hananias:  Thus saith the Lord:  Thou hast broken
chains of wood, and thou shalt make for them chains of iron.

28:14. For thus saith the Lord of hosts the God of Israel:  I have put a
yoke of iron upon the neck of all these nations, to serve
Nabuchodonosor king of Babylon, and they shall serve him:  moreover also
I have given him the beasts of the earth.

28:15. And Jeremias the prophet said to Hananias the prophet:  Hear now,
Hananias:  the Lord hath not sent thee, and thou hast made this people
to trust in a lie.

28:16. Therefore thus saith the Lord:  Behold I will send thee away from
off the face of the earth:  this year shalt thou die:  for thou hast
spoken against the Lord.

28:17. And Hananias the prophet died in that year, in the seventh
month.



Jeremias Chapter 29


Jeremias writeth to the captives in Babylon, exhorting them to be easy
there, and not to hearken to false prophets.  That they shall be
delivered after seventy years.  But those that remain in Jerusalem shall
perish by the sword, famine, and pestilence.  And that Achab, Sedecias,
and Semeias, false prophets, shall die miserably.

29:1. Now these are the words of the letter which Jeremias the prophet
sent from Jerusalem to the residue of the ancients that were carried
into captivity, and to the priests, and to the prophets, and to all the
people, whom Nabuchodonosor had carried away from Jerusalem to Babylon:

29:2. After that Jechonias the king, and the queen, and the eunuchs,
and the princes of Juda, and of Jerusalem, and the craftsmen, and the
engravers were departed out of Jerusalem:

29:3. By the hand of Elasa the son of Saphan, and Gamarias the son of
Helcias, whom Sedecias king of Juda sent to Babylon to Nabuchodonosor
king of Babylon, saying:

29:4. Thus saith the Lord of hosts the God of Israel, to all that are
carried away captives, whom I have caused to be carried away from
Jerusalem to Babylon:

29:5. Build ye houses, and dwell in them:  and plant orchards, and eat
the fruit of them.

29:6. Take ye wives, and beget sons and daughters:  and take wives for
your sons, and give your daughters to husbands, and let them bear sons
and daughters:  and be ye multiplied there, and be not few in number.

29:7. And seek the peace of the city, to which I have caused you to be
carried away captives; and pray to the Lord for it:  for in the peace
thereof shall be your peace.

29:8. For thus saith the Lord of hosts the God of Israel:  Let not your
prophets that are in the midst of you, and your diviners deceive you:
and give no heed to your dreams which you dream:

29:9. For they prophesy falsely to you in my name:  and I have not sent
them, saith the Lord.

29:10. For thus saith the Lord:  When the seventy years shall begin to
be accomplished in Babylon, I will visit you:  and I will perform my
good word in your favour, to bring you again to this place.

29:11. For I know the thoughts that I think towards you, saith the
Lord, thoughts of peace, and not of affliction, to give you an end and
patience.

29:12. And you shall call upon me, and you shall go.  and you shall pray
to me, and I will hear you.

29:13. You shall seek me, and shall find me:  when you shall seek me
with all your heart.

29:14. And I will be found by you, saith the Lord:  and I will bring
back your captivity, and I will gather you out of all nations, and from
all the places to which I have driven you out, saith the Lord:  and I
will bring you back from the place to which I caused you to be carried
away captive.

29:15. Because you have said:  The Lord hath raised us up prophets in
Babylon:

29:16. For thus saith the Lord to the king that sitteth upon the throne
of David, and to all the people that dwell in this city, to your
brethren that are not gone forth with you into captivity.

29:17. Thus saith the Lord of hosts:  Behold I will send upon them the
sword, and the famine, and the pestilence:  and I will make them like
bad figs that cannot be eaten, because they are very bad.

29:18. And I will persecute them with the sword, and with famine, and
with the pestilence:  and I will give them up unto affliction to all the
kingdoms of the earth:  to be a curse, and an astonishment, and a
hissing, and a reproach to all the nations to which I have driven them
out:

29:19. Because they have not hearkened to my words, saith the Lord:
which I sent to them by my servants the prophets, rising by night, and
sending:  and you have not heard, saith the Lord.

29:20. Hear ye therefore the word of the Lord, all ye of the captivity,
whom I have sent out from Jerusalem to Babylon.

29:21. Thus saith the Lord of hosts the God of Israel, to Achab the son
of Colias, and to Sedecias the son of Maasias, who prophesy unto you in
my name falsely:  Behold I will deliver them up into the hands of
Nabuchodonosor the king of Babylon:  and he shall kill them before your
eyes.

29:22. And of them shall be taken up a curse by all the captivity of
Juda, that are in Babylon, saying:  The Lord make thee like Sedecias,
and like Achab, whom the king of Babylon fried in the fire:

29:23. Because they have acted folly in Israel, and have committed
adultery with the wives of their friends, and have spoken lying words
in my name, which I commanded them not:  I am the judge and the witness,
saith the Lord.

29:24. And to Semeias the Nehelamite thou shalt say:

29:25. Thus saith the Lord of hosts the God of Israel:  Because thou
hast sent letters in thy name to all the people that are in Jerusalem,
and to Sophonias the son of Maasias the priest, and to all the priests,
saying:

29:26. The Lord hath made thee priest instead of Joiada the priest,
that thou shouldst be ruler in the house of the Lord, over every man
that raveth and prophesieth, to put him in the stocks, and into prison.

29:27. And now why hast thou not rebuked Jeremias the Anathothite, who
prophesieth to you?

29:28. For he hath also sent to us in Babylon, saying:  It is a long
time:  build ye houses, and dwell in them:  and plant gardens, and eat
the fruits of them.

29:29. So Sophonias the priest read this letter, in the hearing of
Jeremias the prophet.

29:30. And the word of the Lord came to Jeremias, saying:

29:31. Send to all them of the captivity, saying:  Thus saith the Lord
to Semeias the Nehelamite:  Because Semeias hath prophesied to you, and
I sent him not:  and hath caused you to trust in a lie:

29:32. Therefore thus saith the Lord:  behold I will visit upon Semeias
the Nehelamite, and upon his seed:  he shall not have a man to sit in
the midst of this people, and he shall not see the good that I will do
to my people, saith the Lord:  because he hath spoken treason against
the Lord.



Jeremias Chapter 30


God will deliver his people from their captivity:  Christ shall be their
king:  and his church shall be glorious for ever.

30:1. This is the word that came to Jeremias from the Lord, saying:

30:2. Thus saith the Lord, the God of Israel, saying:  Write thee all
the words that I have spoken to thee, in a book.

30:3. For behold the days come, saith the Lord, and I will bring again
the captivity of my people Israel and Juda, saith the Lord:  and I will
cause them to return to the land which I gave to their fathers, and
they shall possess it.

30:4. And these are the words that the Lord hath spoken to Israel and
to Juda:

30:5. For thus saith the Lord:  We have heard a voice of terror:  there
is fear and no peace.

30:6. Ask ye, and see if a man bear children?  why then have I seen
every man with his hands on his loins, like a woman in labour, and all
faces are turned yellow?

30:7. Alas, for that day is great, neither is there the like to it; and
it is the time of tribulation to Jacob, but he shall be saved out of
it.

30:8. And it shall come to pass in that day, saith the Lord of hosts,
that I will break his yoke from off thy neck, and will burst his bands:
and strangers shall no more rule over him:

30:9. But they shall serve the Lord their God, and David their king,
whom I will raise up to them.

David. . .That is, Christ of the house of David.

30:10. Therefore fear thou not, my servant Jacob, saith the Lord,
neither be dismayed, O Israel:  for behold, I will save thee from a
country afar off, and thy seed from the land of their captivity:  and
Jacob shall return, and be at rest, and abound with all good things,
and there shall be none whom he may fear:

30:11. For I am with thee, saith the Lord, to save thee:  for I will
utterly consume all the nations, among which I have scattered thee:  but
I will not utterly consume thee:  but I will chastise thee in judgment,
that thou mayst not seem to thyself innocent.

30:12. For thus saith the Lord:  Thy bruise is incurable, thy wound is
very grievous.

30:13. There is none to judge thy judgment to bind it up:  thou hast no
healing medicines.

30:14. All thy lovers have forgotten thee, and will not seek after
thee:  for I have wounded thee with the wound of an enemy, with cruel
chastisement:  by reason of the multitude of thy iniquities, thy sins
are hardened.

30:15. Why criest thou for thy affliction?  thy sorrow is incurable:  for
the multitude of thy iniquity, and for thy hardened sins I have done
these things to thee.

30:16. Therefore all they that devour thee, shall be devoured:  and all
thy enemies shall be carried into captivity:  and they that waste thee
shall be wasted, and all that prey upon thee will I give for a prey.

30:17. For I will close up thy scar, and will heal thee of thy wounds,
saith the Lord.  Because they have called thee, O Sion, an outcast:  This
is she that hath none to seek after her.

30:18. Thus saith the Lord:  Behold I will bring back the captivity of
the pavilions of Jacob, and will have pity on his houses, and the city
shall be built in her high place, and the temple shall be founded
according to the order thereof.

30:19. And out of them shall come forth praise, and the voice of them
that play:  and I will multiply them, and they shall not be made few:
and I will glorify them, and they shall not be lessened.

30:20. And their children shall be as from the beginning, and their
assembly shall be permanent before me:  and I will visit against all
that afflict them.

30:21. And their leader shall be of themselves:  and their prince shall
come forth from the midst of them:  and I will bring him near, and he
shall come to me:  for who is this that setteth his heart to approach to
me, saith the Lord?

30:22. And you shall be my people:  and I will be your God.

30:23. Behold the whirlwind of the Lord, his fury going forth, a
violent storm, it shall rest upon the head of the wicked.

30:24. The Lord will not turn away the wrath of his indignation, till
he have executed and performed the thought of his heart:  in the latter
days you shall understand these things.



Jeremias Chapter 31


The restoration of Israel.  Rachel shall cease from morning.  The new
covenant.  The church shall never fail.

31:1. At that time, saith the Lord, I will be the God of all the
families of Israel, and they shall be my people.

31:2. Thus saith the Lord:  The people that were left and escaped from
the sword, found grace in the desert:  Israel shall go to his rest.

31:3. The Lord hath appeared from afar to me.  Yea I have loved thee
with an everlasting love, therefore have I drawn thee, taking pity on
thee.

31:4. And I will build thee again, and thou shalt be built, O virgin of
Israel:  thou shalt again be adorned with thy timbrels, and shalt go
forth in the dances of them that make merry.

31:5. Thou shalt yet plant vineyards in the mountains of Samaria:  the
planters shall plant, and they shall not gather the vintage before the
time.

31:6. For there shall be a day, in which the watchmen on mount Ephraim,
shall cry:  Arise, and let us go up to Sion to the Lord our God.

31:7. For thus saith the Lord:  Rejoice ye in the joy of Jacob, and
neigh before the head of the Gentiles:  shout ye, and sing, and say:
Save, O Lord, thy people, the remnant of Israel.

31:8. Behold I will bring them from the north country, and will gather
them from the ends of the earth and among them shall be the blind, and
the lame, the woman with child, and she that is bringing forth,
together, a great company of them returning hither.

31:9. They shall come with weeping:  and I will bring them back in
mercy:  and I will bring them through the torrents of waters in a right
way, and they shall not stumble in it:  for I am a father to Israel, and
Ephraim is my firstborn.

31:10. Hear the word of the Lord, O ye nations, and declare it in the
islands that are afar off, and say:  He that scattered Israel will
gather him:  and he will keep him as the shepherd doth his flock.

31:11. For the Lord hath redeemed Jacob, and delivered him out of the
hand of one that was mightier than he.

31:12. And they shall come, and shall give praise in mount Sion:  and
they shall flow together to the good things of the Lord, for the corn,
and wine, and oil, and the increase of cattle and herds, and their soul
shall be as a watered garden, and they shall be hungry no more.

31:13. Then shall the virgin rejoice in the dance, the young men and
old men together:  and I will turn their mourning into joy, and will
comfort them, and make them joyful after their sorrow.

31:14. And I will fill the soul of the priests with fatness:  and my
people shall be filled with my good things, saith the Lord.

31:15. Thus saith the Lord:  A voice was heard on high of lamentation,
of mourning, and weeping, of Rachel weeping for her children and
refusing to be comforted for them, because they are not.

31:16. Thus saith the Lord:  Let thy voice cease from weeping, and thy
eyes tears:  for there is a reward for thy work, saith the Lord:  and
they shall return out of the land of the enemy.

31:17. And there is hope for thy last end, saith the Lord:  and the
children shall return to their own borders.

31:18. Hearing I heard Ephraim when he went into captivity:  thou hast
chastised me, and I was instructed, as a young bullock unaccustomed to
the yoke.  Convert me, and I shall be converted, for thou art the Lord
my God.

31:19. For after thou didst convert me, I did penance:  and after thou
didst shew unto me, I struck my thigh:  I am confounded and ashamed,
because I have borne the reproach of my youth.

31:20. Surely Ephraim is an honourable son to me, surely he is a tender
child:  for since I spoke of him, I will still remember him.  Therefore
are my bowels troubled for him:  pitying I will pity him, saith the
Lord.

31:21. Set thee up a watchtower, make to thee bitterness:  direct thy
heart into the right way, wherein thou hast walked:  return, O virgin of
Israel, return to these thy cities.

31:22. How long wilt thou be dissolute in deliciousness, O wandering
daughter?  for the Lord hath created a new thing upon the earth:  A WOMAN
SHALL COMPASS A MAN.

31:23. Thus saith the Lord of hosts, the God of Israel:  As yet shall
they say this word in the land of Juda, and in the cities thereof, when
I shall bring back their captivity:  The Lord bless thee, the beauty of
justice, the holy mountain.

31:24. And Juda and all his cities shall dwell therein together:  the
husbandman and they that drive the flocks.

31:25. For I have inebriated the weary soul:  and I have filled every
hungry soul.

31:26. Upon this I was as it were awaked out of a sleep, and I saw, and
my sleep was sweet to me.

31:27. Behold the days come, saith the Lord:  and I will sow the house
of Israel and the house of Juda with the seed of men, and with the seed
of beasts.

31:28. And as I have watched over them, to pluck up, and to throw down,
and to scatter, and destroy, and afflict:  so will I watch over them, to
build up, and to plant them, saith the Lord.

31:29. In those days they shall say no more:  The fathers have eaten a
sour grape, and the teeth of the children are set on edge.

31:30. But every one shall die for his own iniquity:  every man that
shall eat the sour grape, his teeth shall be set on edge.

31:31. Behold the days shall come, saith the Lord, and I will make a
new covenant with the house of Israel, and with the house of Juda:

31:32. Not according to the covenant which I made with their fathers,
in the day that I took them by the hand to bring them out of the land
of Egypt, the covenant which they made void, and I had dominion over
them, saith the Lord.

31:33. But this shall be the covenant that I will make with the house
of Israel, after those days, saith the Lord:  I will give my law in
their bowels, and I will write it in their heart:  and I will be their
God, and they shall be my people.

31:34. And they shall teach no more every man his neighbour, and every
man his brother, saying:  Know the Lord:  for all shall know me from the
least of them even to the greatest, saith the Lord:  for I will forgive
their iniquity, and I will remember their sin no more.

31:35. Thus saith the Lord, who giveth the sun for the light of the
day, the order of the moon and of the stars, for the light of the
night:  who stirreth up the sea, and the waves thereof roar, the Lord of
hosts is his name.

31:36. If these ordinances shall fail before me, saith the Lord:  then
also the seed of Israel shall fail, so as not to be a nation before me
for ever.

31:37. Thus saith the Lord:  If the heavens above can be measured, and
the foundations of the earth searched out beneath, I also will cast
away all the seed of Israel, for all that they have done, saith the
Lord.

31:38. Behold the days come, saith the Lord, that the city shall be
built to the Lord from the tower of Hanameel even to the gate of the
corner.

31:39. And the measuring line shall go out farther in his sight upon
the hill Gareb:  and it shall compass Goatha,

31:40. And the whole valley of dead bodies, and of ashes, and all the
country of death, even to the torrent Cedron, and to the corner of the
horse gate towards the east, the Holy of the Lord:  it shall not be
plucked up, and it shall not be destroyed any more for ever.



Jeremias Chapter 32


Jeremias by God's commandment purchases a field of his kinsman:  and
prophesies the return of the people out of captivity:  and the
everlasting covenant God will make with his church.

32:1. The word that came to Jeremias from the Lord in the tenth year of
Sedecias king of Juda:  the same is the eighteenth year of
Nabuchodonosor.

32:2. At that time the army of the king of Babylon besieged Jerusalem:
and Jeremias the prophet was shut up in the court of the prison, which
was in the house of the king of Juda.

32:3. For Sedecias king of Juda had shut him up, saying:  Why dost thou
prophesy, saying:  Thus saith the Lord:  Behold I will give this city
into the hand of the king of Babylon, and he shall take it?

32:4. And Sedecias king of Juda shall not escape out of the hand of the
Chaldeans:  but he shall be delivered into the hands of the king of
Babylon:  and he shall speak to him mouth to mouth, and his eyes shall
see his eyes.

32:5. And he shall lead Sedecias to Babylon:  and he shall be there till
I visit him, saith the Lord.  But if you will fight against the
Chaldeans, you shall have no success.

32:6. And Jeremias said:  The word of the Lord came to me, saying:

32:7. Behold, Hanameel the son of Sellum thy cousin shall come to thee,
saying:  Buy thee my field, which is in Anathoth, for it is thy right to
buy it, being next akin.

32:8. And Hanameel my uncle's son came to me, according to the word of
the Lord, to the entry of the prison, and said to me:  Buy my field,
which is in Anathoth in the land of Benjamin:  for the right of
inheritance is thine, and thou art next of kin to possess it.  And I
understood that this was the word of the Lord.

32:9. And I bought the field of Hanameel my uncle's son, that is in
Anathoth:  and I weighed him the money, seven staters, and ten pieces of
silver.

32:10. And I wrote it in a book and sealed it, and took witnesses:  and
I weighed him the money in the balances.

32:11. And I took the deed of the purchase that was sealed, and the
stipulations, and the ratifications with the seals that were on the
outside.

32:12. And I gave the deed of the purchase to Baruch the son of Neri
the son of Maasias in the sight of Hanameel my uncle's son, in the
presence of the witnesses that subscribed the book of the purchase, and
before all the Jews that sat in the court of the prison.

32:13. And I charged Baruch before them, saying:

32:14. Thus saith the Lord of hosts the God of Israel:  Take these
writings, this deed of the purchase that is sealed up, and this deed
that is open:  and put them in an earthen vessel, that they may continue
many days.

32:15. For thus saith the Lord of hosts the God of Israel:  Houses, and
fields, and vineyards shall be possessed again in this land.

32:16. And after I had delivered the deed of purchase to Baruch the son
of Neri, I prayed to the Lord, saying:

32:17. Alas, alas, alas, O Lord God, behold thou hast made heaven and
earth by thy great power, and thy stretched out arm:  no word shall be
hard to thee:

32:18. Thou shewest mercy unto thousands, and returnest the iniquity of
the fathers into the bosom of their children after them:  O most mighty,
great, and powerful, the Lord of hosts is thy name.

32:19. Great in counsel, and incomprehensible in thought:  whose eyes
are open upon all the ways of the children of Adam, to render unto
every one according to his ways, and according to the fruit of his
devices.

32:20. Who hast set signs and wonders in the land of Egypt even until
this day, and in Israel, and amongst men, and hast made thee a name as
at this day.

32:21. And hast brought forth thy people Israel, out of the land of
Egypt with signs, and with wonders, and with a strong hand, and a
stretched out arm, and with great terror.

32:22. And hast given them this land which thou didst swear to their
fathers, to give them a land flowing with milk and honey.

32:23. And they came in, and possessed it:  but they obeyed not thy
voice, and they walked not in thy law:  and they did not any of those
things that thou didst command them to do, and all these evils are come
upon them.

32:24. Behold works are built up against the city to take it:  and the
city is given into the hands of the Chaldeans, who fight against it, by
the sword, and the famine, and the pestilence:  and what thou hast
spoken, is all come to pass, as thou thyself seest.

32:25. And sayest thou to me, O Lord God:  Buy a field for money, and
take witnesses, whereas the city is given into the hands of the
Chaldeans?

32:26. And the word of the Lord came to Jeremias, saying:

32:27. Behold I am the Lord the God of all flesh:  shall any thing be
hard for me?

32:28. Therefore thus saith the Lord:  Behold I will deliver this city
into the hands of the Chaldeans, and into the hands of the king of
Babylon, and they shall take it.

32:29. And the Chaldeans that fight against this city, shall come and
set it on fire, and burn it, with the houses upon whose roofs they
offered sacrifice to Baal, and poured out drink offerings to strange
gods, to provoke me to wrath.

32:30. For the children of Israel, and the children of Juda, have
continually done evil in my eyes from their youth:  the children of
Israel who even till now provoke me with the work of their hands, saith
the Lord.

32:31. For this city hath been to me a provocation and indignation from
the day that they built it, until this day, in which it shall be taken
out of my sight.

32:32. Because of all the evil of the children of Israel, and of the
children of Juda, which they have done, provoking me to wrath, they and
their kings, their princes, and their priests, and their prophets, the
men of Juda, and the inhabitants of Jerusalem.

32:33. And they have turned their backs to me, and not their faces:
when I taught them early in the morning, and instructed them, and they
would not hearken to receive instruction.

32:34. And they have set their idols in the house, in which my name is
called upon, to defile it.

32:35. And they have built the high places of Baal, which are in the
valley of the son of Ennom, to consecrate their sons and their
daughters to Moloch:  which I commanded them not, neither entered it
into my heart, that they should do this abomination, and cause Juda to
sin.

32:36. And now, therefore, thus saith the Lord the God of Israel to
this city, whereof you say that it shall be delivered into the hands of
the king of Babylon by the sword, and by famine, and by pestilence:

32:37. Behold I will gather them together out of all the lands to which
I have cast them out in my anger, and in my wrath, and in my great
indignation:  and I will bring them again into this place, and will
cause them to dwell securely.

32:38. And they shall be my people, and I will be their God.

32:39. And I will give them one heart, and one way, that they may fear
me all days:  and that it may be well with them, and with their children
after them.

32:40. And I will make an everlasting covenant with them, and will not
cease to do them good:  and I will give my fear in their heart, that
they may not revolt from me.

32:41. And I will rejoice over them, when I shall do them good:  and I
will plant them in this land in truth, with my whole heart, and with
all my soul.

32:42. For thus saith the Lord:  As I have brought upon this people all
this great evil:  so will I bring upon them all the good that I now
speak to them.

32:43. And fields shall be purchased in this land:  whereof you say that
it is desolate, because there remaineth neither man nor beast, and it
is given into the hands of the Chaldeans.

32:44. Fields shall be bought for money, and deeds shall be written,
and sealed, and witnesses shall be taken, in the land of Benjamin, and
round about Jerusalem, in the cities of Juda, and in the cities on the
mountains, and in the cities of the plains, and in the cities that are
towards the south:  for I will bring back their captivity, saith the
Lord.



Jeremias Chapter 33


God promises reduction from captivity, and other blessings:  especially
the coming of Christ, whose reign in his church shall be glorious and
perpetual.

33:1. And the word of the Lord came to Jeremias the second time, while
he was yet shut up in the court of the prison, saying:

33:2. Thus saith the Lord, who will do, and will form it, and prepare
it, the Lord is his name.

33:3. Cry to me and I will hear thee:  and I will shew thee great
things, and sure things which thou knowest not.

33:4. For thus saith the Lord the God of Israel to the houses of this
city, and to the houses of the king of Juda, which are destroyed, and
to the bulwarks, and to the sword.

33:5. Of them that come to fight with the Chaldeans, and to fill them
with the dead bodies of the men whom I have slain in my wrath, and in
my indignation, hiding my face from this city because of all their
wickedness.

33:6. Behold I will close their wounds and give them health, and I will
cure them:  and I will reveal to them the prayer of peace and truth.

The prayer of peace. . .That is, the peace and welfare which they pray
for.

33:7. And I will bring back the captivity of Juda, and the captivity of
Jerusalem:  and I will build them as from the beginning.

33:8. And I will cleanse them from all their iniquity, whereby they
have sinned against me:  and I will forgive all their iniquities,
whereby they have sinned against me, and despised me.

33:9. And it shall be to me a name, and a joy, and a praise, and a
gladness before all the nations of the earth, that shall hear of all
the good things which I will do to them:  and they shall fear and be
troubled for all the good things, and for all the peace that I will
make for them.

33:10. Thus saith the Lord:  There shall be heard again in this place
(which you say is desolate, because there is neither man nor beast:  in
the cities of Juda, and without Jerusalem, which are desolate without
man, and without inhabitant, and without beast)

33:11. The voice of joy and the voice of gladness, the voice of the
bridegroom and the voice of the bride, the voice of them that shall
say:  Give ye glory to the Lord of hosts, for the Lord is good, for his
mercy endureth for ever:  and of them that shall bring their vows into
the house of the Lord:  for I will bring back the captivity of the land
as at the first, saith the Lord.

33:12. Thus saith the Lord of hosts:  There shall be again in this place
that is desolate without man, and without beast, and in all the cities
thereof, an habitation of shepherds causing their flocks to lie down.

33:13. And in the cities on the mountains, and in the cities of the
plains, and in the cities that are towards the south:  and in the land
of Benjamin, and round about Jerusalem, and in the cities of Juda shall
the flocks pass again under the hand of him that numbereth them, saith
the Lord.

33:14. Behold the days come, saith the Lord, that I will perform the
good word that I have spoken to the house of Israel, and to the house
of Juda.

33:15. In those days, and at that time, I will make the bud of justice
to spring forth unto David, and he shall do judgment and justice in the
earth.

33:16. In those days shall Juda be saved, and Jerusalem shall dwell
securely:  and this is the name that they shall call him, The Lord our
just one.

33:17. For thus saith the Lord:  There shall not be cut off from David a
man to sit upon the throne of the house of Israel.

There shall not be cut off from David, etc. . .This was verified in
Christ, who is of the house of David; and whose kingdom in his church
shall have no end.

33:18. Neither shall there be cut off from the priests and Levites a
man before my face to offer holocausts, and to burn sacrifices, and to
kill victims continually.

Neither shall there be cut off from the priests, etc. . .This promise
relates to the Christian priesthood; which shall also continue for
ever:  the functions of which (more especially the great sacrifice of
the altar) are here expressed by the name of holocausts, and other
offerings of the law, which were so many figures of the Christian
sacrifice.

33:19. And the word of the Lord came to Jeremias, saying:

33:20. Thus saith the Lord:  if my covenant, with the day can be made
void, and my covenant with the night, that there should not be day and
night in their season:

33:21. Also my covenant with David my servant may be made void, that he
should not have a son to reign upon his throne, and with the Levites
and priests my ministers.

33:22. As the stars of heaven cannot be numbered, nor the sand of the
sea be measured:  so will I multiply the seed of David my servant, and
the Levites my ministers.

33:23. And the word of the Lord came to Jeremias, saying:

33:24. Hast thou not seen what this people hath spoken, saying:  The two
families which the Lord had chosen, are cast off:  and they have
despised my people, so that it is no more a nation before them?

Two families, etc. . .Viz., the families of the kings and priests.

33:25. Thus saith the Lord.  If I have not set my covenant between day
and night, and laws to heaven and earth:

33:26. Surely I will also cast off the seed of Jacob, and of David my
servant, so as not to take any of his seed to be rulers of the seed of
Abraham, Isaac, and Jacob:  for I will bring back their captivity, and
will have mercy on them.



Jeremias Chapter 34


The prophet foretells that Sedecias shall fall into the hands of
Nabuchodonosor:  God's sentence upon the princes and people that had
broken his covenant.

34:1. The word that came to Jeremias from the Lord, when Nabuchodonosor
king of Babylon, and all his army, and all the kingdoms of the earth,
that were under the power of his hand, and all the people fought
against Jerusalem and against all the cities thereof, saying:

34:2. Thus saith the Lord, the God of Israel:  Go, and speak to Sedecias
king of Juda, and say to him:  Thus saith the Lord:  Behold I will
deliver this city into the hands of the king of Babylon, and he shall
burn it with fire.

34:3. And thou shalt not escape out of his hand:  but thou shalt surely
be taken, and thou shalt be delivered into his hand:  and thy eyes shall
see the eyes of the king of Babylon, and his mouth shall speak with thy
mouth, and thou shalt go to Babylon.

34:4. Yet hear the word of the Lord, O Sedecias king of Juda:  Thus
saith the Lord to thee:  Thou shalt not die by the sword.

34:5. But thou shalt die in peace, and according to the burnings of thy
fathers, the former kings that were before thee, so shall they burn
thee:  and they shall mourn for thee, saying:  Alas, Lord:  for I have
spoken the word, saith the Lord.

Die in peace. . .That is, by a natural death.

34:6. And Jeremias the prophet spoke all these words to Sedecias the
king of Juda in Jerusalem.

34:7. And the army of the king of Babylon fought against Jerusalem, and
against all the cities of Juda that were left, against Lachis, and
against Azecha:  for these remained of the cities of Juda, fenced
cities.

34:8. The word that came to Jeremias from the Lord, after that king
Sedecias had made a covenant with all the people in Jerusalem making a
proclamation:

34:9. That every man should let his manservant, and every man his
maidservant, being Hebrew man or a Hebrew woman, go free:  and that they
should not lord it over them, to wit, over the Jews their brethren.

34:10. And all the princes, and all the people who entered into the
covenant, heard that every man should let his manservant, and every man
his maidservant go free, and should no more have dominion over them:
and they obeyed, and let them go free.

34:11. But afterwards they turned:  and brought back again their
servants and their handmaids, whom they had let go free, and brought
them into subjection as menservants and maidservants.

34:12. And the word of the Lord came to Jeremias from the Lord, saying:

34:13. Thus saith the Lord the God of Israel:  I made a covenant with
your fathers in the day that I brought them out of the land of Egypt,
out of the house of bondage, saying:

34:14. At the end of seven years, let ye go every man his brother being
a Hebrew, who hath been sold to thee, so he shall serve thee six years:
and thou shalt let him go free from thee:  and your fathers did not
hearken to me, nor did they incline their ear.

34:15. And you turned to day, and did that which was right in my eyes,
in proclaiming liberty every one to his brother:  and you made a
covenant in my sight, in the house upon which my name is invocated.

34:16. And you are fallen back, and have defiled my name:  and you have
brought back again every man his manservant, and every man his
maidservant, whom you had let go free, and set at liberty:  and you have
brought them into subjection to be your servants and handmaids.

34:17. Therefore thus saith the Lord:  You have not hearkened to me, in
proclaiming liberty every man to his brother and every man to his
friend:  behold I proclaim a liberty for you, saith the Lord, to the
sword, to the pestilence, and to the famine:  and I will cause you to be
removed to all the kingdoms of the earth.

34:18. And I will give the men that have transgressed my covenant, and
have not performed the words of the covenant which they agreed to in my
presence, when they cut the calf in two and passed between the parts
thereof:

34:19. The princes of Juda, and the princes of Jerusalem, the eunuchs,
and the priests, and all the people of the land that passed between the
parts of the calf:

34:20. And I will give them into the hands of their enemies, and into
the hands of them that seek their life:  and their dead bodies shall be
for meat to the fowls of the air, and to the beasts of the earth.

34:21. And Sedecias the king of Juda, and his princes, I will give into
the hands of their enemies, and into the hands of them that seek their
lives, and into the hands of the armies of the king of Babylon, which
are gone from you.

34:22. Behold I will command, saith the Lord, and I will bring them
again to this city, and they shall fight against it, and take it, and
burn it with fire:  and I will make the cities of Juda a desolation,
without an inhabitant.



Jeremias Chapter 35


The obedience of the Rechabites condemns the disobedience of the Jews.
The reward of the Rechabites.

35:1. The word that came to Jeremias from the Lord in the days of
Joakim the son of Josias king of Juda, saying:

35:2. Go to the house of the Rechabites:  and speak to them, and bring
them into the house of the Lord, into one of the chambers of the
treasures, and thou shalt give them wine to drink.

Rechabites. . .These were of the race of Jethro, father in law to Moses.

35:3. And I took Jezonias the son of Jeremias the son of Habsanias, and
his brethren, and all his sons, and the whole house of the Rechabites.

35:4. And I brought them into the house of the Lord, to the treasure
house of the sons of Hanan, the son of Jegedelias the man of God, which
was by the treasure house of the princes, above the treasure of Maasias
the son of Sellum, who was keeper of the entry.

35:5. And I set before the sons of the house of the Rechabites pots
full of wine, and cups:  and I said to them:  Drink ye wine.

35:6. And they answered :  We will not drink wine:  because Jonadab the
son of Rechab, our father, commanded us, saying:  You shall drink no
wine, neither you, nor your children, for ever:

35:7. Neither shall ye build houses, nor sow reed, nor plant vineyards,
nor have any:  but you shall dwell in tents all your days, that you may
live many days upon the face of the earth, in which you are strangers.

35:8. Therefore we have obeyed the voice of Jonadab the son of Rechab,
our father, in all things that he commanded us:  so as to drink no wine
all our days:  neither we, nor our wives, nor our sons, nor our
daughters:

35:9. Nor to build houses to dwell in, nor to have vineyard, or field,
or seed:

35:10. But we have dwelt in tents, and have been obedient according to
all that Jonadab our father commanded us.

35:11. But when Nabuchodonosor king of Babylon came up to our land, we
said:  Come, let us go into Jerusalem from the face of the army of the
Chaldeans, and from the face of the army of Syria:  and we have remained
in Jerusalem.

35:12. And the word of the Lord came to Jeremias, saying:

35:13. Thus saith the Lord of hosts the God of Israel:  Go, and say to
the men of Juda, and to the inhabitants of Jerusalem:  Will you not
receive instruction, to obey my words, saith the Lord?

35:14. The words of Jonadab the son of Rechab, by which he commanded
his sons not to drink wine, have prevailed:  and they have drunk none to
this day, because they have obeyed the commandment of their father:  but
I have spoken to you, rising early and speaking, and you have not
obeyed me.

35:15. And I have sent to you all my servants the prophets, rising
early, and sending and saying:  Return ye every man from his wicked way,
and make your ways good:  and follow not strange gods, nor worship them,
and you shall dwell in the land, which I gave you and your fathers:  and
you have not inclined your ear, nor hearkened to me.

35:16. So the sons of Jonadab the son of Rechab have constantly kept
the commandment of their father, which he commanded them:  but this
people hath not obeyed me.

35:17. Therefore thus saith the Lord of hosts the God of Israel:  Behold
I will bring upon Juda, and upon all the inhabitants of Jerusalem all
the evil that I have pronounced against them, because I have spoken to
them, and they have not heard:  I have called to them, and they have not
answered me.

35:18. And Jeremias said to the house of the Rechabites:  Thus saith the
Lord of hosts the God of Israel:  Because you have obeyed the
commandment of Jonadab your father, and have kept all his precepts, and
have done all that he commanded you:

35:19. Therefore thus saith the Lord of hosts the God of Israel:  There
shall not be wanting a man of the race of Jonadab the son of Rechab,
standing before me for ever.



Jeremias Chapter 36


Jeremias sends Baruch to read his prophecies in the temple; the book is
brought to king Joakim, who burns it.  The prophet denounces his
judgment, and causes Baruch to write a new copy.

36:1. And it came to pass in the fourth year of Joakim the son of
Josias king of Juda, that this word came to Jeremias by the Lord,
saying:

36:2. Take thee a roll of a book, and thou shalt write in it all the
words that I have spoken to thee against Israel and Juda, and against
all the nations from the day that I spoke to thee, from the days of
Josias even to this day.

36:3. If so be, when the house of Juda shall hear all the evils that I
purpose to do unto them, that they may return every man from his wicked
way:  and I will forgive their iniquity, and their sin.

36:4. So Jeremias called Baruch the son of Nerias:  and Baruch wrote
from the mouth of Jeremias all the words of the Lord, which he spoke to
him, upon the roll of a book.

36:5. And Jeremias commanded Baruch, saying:  I am shut up, and cannot
go into the house of the Lord.

Shut up. . .Not that the prophet was now in prison; for the contrary
appears from ver. 19, but that he kept himself shut up, by reason of
the persecutions he had lately met with.  See chap. 26.

36:6. Go thou in therefore, and read out of the volume, which thou hast
written from my mouth, the words of the Lord, in the hearing of all the
people in the house of the Lord on the fasting day:  and also thou shalt
read them in the hearing of all Juda that come out of their cities:

36:7. If so be they may present their supplication before the Lord, and
may return every one from his wicked way:  for great is the wrath and
indignation which the Lord hath pronounced against this people.

36:8. And Baruch the son of Nerias did according to all that Jeremias
the prophet ,had commanded him, reading out of the volume the words of
the Lord in the house of the Lord.

36:9. And it came to pass in the fifth year of Joakim the son of Josias
king of Juda, in the ninth month, that they proclaimed a fast before
the Lord to all the people in Jerusalem, and to all the people that
were come together out of the cities of Juda to Jerusalem.

36:10. And Baruch read out of the volume the words of Jeremias in the
house of the Lord, in the treasury of Gamarias the son of Saphan the
scribe, in the upper court, in the entry of the new gate of the house
of the Lord, in the hearing of all the people.

36:11. And when Micheas the son of Gamarias the son of Saphan had heard
out of the book all the words of the Lord,

36:12. He went down into the king's house to the secretary's chamber:
and behold all the princes sat there, Elisama the scribe, and Dalaias
the son of Semeias, and Elnathan the son of Achobor, and Gamarias the
son of Saphan, and Sedecias the son of Hananias, and all the princes.

36:13. And Micheas told them all the words that he had heard when
Baruch read out of the volume in the hearing of the people.

36:14. Therefore all the princes sent Judi the son of Nathanias, the
son of Selemias, the son of Chusi, to Baruch, saying:  Take in thy hand
the volume in which thou hast read in the hearing of the people, and
come.  So Baruch the son of Nerias took the volume in his hand, and came
to them.

36:15. And they said to him:  Sit down and read these things in our
hearing.  And Baruch read in their hearing.

36:16. And when they had heard all the words, they looked upon one
another with astonishment, and they said to Baruch:  We must tell the
king all these words.

36:17. And they asked him, saying:  Tell us how didst thou write all
these words from his mouth.

36:18. And Baruch said to them:  With his mouth he pronounced all these
words as if he were reading to me:  and I wrote in a volume with ink.

36:19. And the princes said to Baruch:  Go, and hide thee, both thou and
Jeremias, and let no man know where you are.

36:20. And they went in to the king into the court:  but they laid up
the volume in the chamber of Elisama the scribe:  and they told all the
words in the hearing of the king.

36:21. And the king sent Judi that he should take the volume:  who
bringing it out of the chamber of Elisama the scribe, read it in the
hearing of the king, and of all the princes that stood about the king.

36:22. Now the king sat in the winter house, in the ninth month:  and
there was a hearth before him full of burning coals.

36:23. And when Judi had read three or four pages, he cut it with the
penknife, and he cast it into the fire, that was upon the hearth, till
all the volume was consumed with the fire that was on the hearth.

36:24. And the king and all his servants that heard all these words
were not afraid, nor did they rend their garments.

36:25. But yet Elnathan, and Dalaias, and Gamarias spoke to the king,
not to burn the book:  and he heard them not.

36:26. And the king commanded Jeremiel the son of Amelech, and Saraias
the son of Ezriel, and Selemias the son of Abdeel, to take up Baruch
the scribe, and Jeremias the prophet:  but the Lord hid them.

36:27. And the word of the Lord came to Jeremias the prophet, after
that the king had burnt the volume, and the words that Baruch had
written from the mouth of Jeremias, saying:

36:28. Take thee again another volume:  and write in it all the former
words that were in the first volume which Joakim the king of Juda both
burnt.

36:29. And thou shalt say to Joakim the king of Juda:  Thus saith the
Lord:  Thou hast burnt that volume, saying:  Why hast thou written
therein, and said:  The king of Babylon shall come speedily, and shall
lay waste this land:  and shall cause to cease from thence man and
beast?

36:30. Therefore thus saith the Lord against Joakim the king of Juda:
He shall have none to sit upon the throne of David:  and his dead body
shall be cast out to the heat by day, and to the frost by night.

He shall have none, etc. . .Because his son Joachin or Jechonias, within
three months after the death of his father, was carried away to
Babylon, so that his reign is not worthy of notice.

36:31. And I will punish him, and his seed and his servants, for their
iniquities, and I will bring upon them, and upon the inhabitants of
Jerusalem, and upon the men of Juda all the evil that I have pronounced
against them, but they have not heard.

36:32. And Jeremias took another volume, and gave it to Baruch the son
of Nerias the scribe:  who wrote in it from the mouth of Jeremias all
the words of the book which Joakim the king of Juda had burnt with
fire:  and there were added besides many more words than had been
before.



Jeremias Chapter 37


Jeremias prophesies that the Chaldeans, who had departed from
Jerusalem, would return and burn the city.  He is cast into prison.  His
conference with Sedecias.

37:1. Now king Sedecias the son of Josias reigned instead of Jechonias
the son of Joakim:  whom Nabuchodonosor king of Babylon made king in the
land of Juda.

37:2. But neither he, nor his servants, nor the people of the land did
obey the words of the Lord, that he spoke in the hand of Jeremias the
prophet.

37:3. And king Sedecias sent Juchal the son of Selemias, and Sophonias
the son of Maasias the priest to Jeremias the prophet, saying:  Pray to
the Lord our God for us.

37:4. Now Jeremias walked freely in the midst of the people:  for they
had not as yet cast him into prison.  And the army of Pharao was come
out of Egypt:  and the Chaldeans that besieged Jerusalem, hearing these
tidings, departed from Jerusalem.

37:5. And the word of the Lord came to Jeremias the prophet, saying:

37:6. Thus saith the Lord the God of Israel:  Thus shall you say to the
king of Juda, who sent you to inquire of me:  Behold the army of Pharao,
which is come forth to help you, shall return into their own land, into
Egypt.

37:7. And the Chaldeans shall come again, and fight against this city,
and take it, and burn it with fire.

37:8. Thus saith the Lord:  Deceive not your souls, saying:  The
Chaldeans shall surely depart and go away from us:  for they shall not
go away.

37:9. But if you should even beat all the army of the Chaldeans that
fight against you, and there should be left of them some wounded men:
they shall rise up, every man from his heart, and burn this city with
fire.

37:10. Now when the army of the Chaldeans was gone away from Jerusalem,
because of Pharao's army,

37:11. Jeremias went forth out of Jerusalem to go into the land of
Benjamin:  and to divide a possession there in the presence of the
citizens,

37:12. And when he was come to the gate of Benjamin, the captain of the
gate, who was there in his turn, was one named Jerias, the son of
Selemias, the son of Hananias:  and he took hold of Jeremias the
prophet, saying:  Thou art fleeing to the Chaldeans.

37:13. And Jeremias answered:  It is not so, I am not fleeing to the
Chaldeans.  But he hearkened not to him:  so Jerias took Jeremias and
brought him to the princes.

37:14. Wherefore the princes were angry with Jeremias, and they beat
him, and cast him into the prison that was in the house of Jonathan the
scribe:  for he was chief over the prison.

37:15. So Jeremias went into the house of the prison, and into the
dungeon:  and Jeremias remained there many days.

37:16. Then Sedecias the king, sending, took him:  and asked him
secretly in his house, and said:  Is there, thinkest thou, any word from
the Lord?  And Jeremias said.  There is.  And he said:  Thou shalt be
delivered into the hands of the king of Babylon.

37:17. And Jeremias said to king Sedecias:  In what have I offended
against thee, or thy servants, or thy people, that thou hast cast me
into prison?

37:18. Where are your prophets that prophesied to you, and said:  The
king of Babylon shall not come against you, and against this land?

37:19. Now therefore hear, I beseech thee, my lord the king:  let my
petition be accepted in thy sight:  and send me not back into the house
of Jonathan the scribe, lest I die there.

37:20. Then king Sedecias commanded that Jeremias should be committed
into the entry of the prison:  and that they should give him daily a
piece of bread, beside broth, till all the bread in the city were
spent:  and Jeremias remained in the entry of the prison.



Jeremias Chapter 38


The prophet at the instance of the great men is cast into a filthy
dungeon:  he is drawn out by Abdemelech, and has another conference with
the king.

38:1. Now Saphatias the son of Mathan, and Gedelias the son of Phassur,
and Juchal the son of Selemias, and Phassur the son of Melchias heard
the words that Jeremias spoke to all the people, saying:

38:2. Thus saith the Lord:  Whosoever shall remain in this city, shall
die by the sword, and by famine, and by pestilence:  but he that shall
go forth to the Chaldeans, shall live, and his life shall be safe, and
he shall live.

38:3. Thus saith the Lord:  This city shall surely be delivered into the
hand of the army of the king of Babylon, and he shall take it.

38:4. And the princes said to the king.  We beseech thee that this man
may be put to death:  for on purpose he weakeneth the hands of the men
of war, that remain in this city, and the hands of the people, speaking
to them according to these words:  for this man seeketh not peace to
this people, but evil.

38:5. And king Sedecias said:  Behold he is in your hands:  for it is not
lawful for the king to deny you any thing.

38:6. Then they took Jeremias and cast him into the dungeon of Melchias
the son of Amelech, which was in the entry of the prison:  and they let
down Jeremias by ropes into the dungeon, wherein there was no water,
but mire.  And Jeremias sunk into the mire.

38:7. Now Abdemelech the Ethiopian, an eunuch that was in the king's
house, heard that they had put Jeremias in the dungeon:  but the king
was sitting in the gate of Benjamin.

38:8. And Abdemelech went out of the king's house, and spoke to the
king, saying:

38:9. My lord the king, these men have done evil in all that they have
done against Jeremias the prophet, casting him into the dungeon to die
there with hunger, for there is no more bread in the city.

38:10. Then the king commanded Abdemelech the Ethiopian, saying:  Take
from hence thirty men with thee, and draw up Jeremias the prophet out
of the dungeon, before he die.

38:11. So Abdemelech taking the men with him, went into the king's
house that was under the storehouse:  and he took from thence old rags,
and old rotten things, and he let them down by cords to Jeremias into
the dungeon.

38:12. And Abdemelech the Ethiopian said to Jeremias:  Put these old
rags and these rent and rotten things under thy arms, and upon the
cords:  and Jeremias did so.

38:13. And they drew up Jeremias with the cords, and brought him forth
out of the dungeon.  And Jeremias remained in the entry of the prison.

38:14. And king Sedecias sent, and took Jeremias the prophet to him to
the third gate, that was in the house of the Lord:  and the king said to
Jeremias:  I will ask thee a thing, hide nothing from me.

38:15. Then Jeremias said to Sedecias:  If I shall declare it to thee,
wilt thou not put me to death?  and if I give thee counsel, thou wilt
not hearken to me.

38:16. Then king Sedecias swore to Jeremias, in private, saying:  As the
Lord liveth, that, made us this soul, I will not put thee to death, nor
will I deliver thee into the hands of these men that seek thy life.

38:17. And Jeremias said to Sedecias:  Thus saith the Lord of hosts the
God of Israel:  If thou wilt take a resolution and go out to the princes
of the king of Babylon, thy soul shall live, and this city shall not be
burnt with fire:  and thou shalt be safe, and thy house.

38:18. But if thou wilt not go out to the princes of the king of
Babylon, this city shall be delivered into the hands of the Chaldeans,
and they shall burn it with fire:  and thou shalt not escape out of
their hand.

38:19. And king Sedecias said to Jeremias:  I am afraid because of the
Jews that are fled over to the Chaldeans:  lest I should be delivered
into their hands, and they should abuse me.

38:20. But Jeremias answered:  They shall not deliver thee:  hearken, I
beseech thee, to the word of the Lord, which I speak to the, and it
shall be well with thee, and thy soul shall live.

38:21. But if thou wilt not go forth, this is the word which the Lord
hath shewn me:

38:22. Behold all the women that are left in the house of the king of
Juda, shall be brought out to the princes of the king of Babylon:  and
they shall say:  Thy men of peace have deceived thee, and have prevailed
against thee, they have plunged thy feet in the mire, and in a slippery
place and they have departed from thee.

Thy men of peace. . .Viri pacifici tui.  That is thy false friends
promising thee peace and happiness, and by their evil counsels
involving thee in misery.

38:23. And all thy wives, and thy children shall be brought out to the
Chaldeans, and thou shalt not escape their hands, but thou shalt be
taken by the hand of the king of Babylon:  and he shall burn this city
with fire.

38:24. Then Sedecias said to Jeremias:  Let no man know these words, and
thou shalt not die.

38:25. But if the princes shall hear that I have spoken with thee, and
shall come to thee, and say to thee:  Tell us what thou hast said to the
king, hide it not from us, and we will not kill thee:  and also what the
king said to thee:

38:26. Thou shalt say to them:  I presented my supplication before the
king, that he would not command me to be carried back into the house of
Jonathan, to die there.

38:27. So all the princes came to Jeremias, and asked him:  and he spoke
to them according to all the words that the king had commanded him:  and
they left him:  for nothing had been heard.

38:28. But Jeremias remained in the entry of the prison, until the day
that Jerusalem was taken:  and it came to pass that Jerusalem was taken.



Jeremias Chapter 39


After two years' siege Jerusalem is taken.  Sedecias is carried before
Nabuchodonosor, who kills his sons in his sight, and then puts out his
eyes.  Jeremias is set at liberty.

39:1. In the ninth year of Sedecias king of Juda, in the tenth month,
came Nabuchodonosor king of Babylon, and all his army to Jerusalem, and
they besieged it.

39:2. And in the eleventh year of Sedecias, in the fourth month, the
fifth day of the month, the city was opened.

39:3. And all the princes of the king of Babylon came in, and sat in
the middle gate:  Neregel, Sereser, Semegarnabu, Sarsachim, Rabsares,
Neregel, Serezer, Rebmag, and all the rest of the princes of the king
of Babylon.

39:4. And when Sedecias the king of Juda and all the men of war saw
them, they fled:  and they went forth in the night out of the city by
the way of the king's garden, and by the gate that was between the two
walls, and they went out to the way of the desert.

39:5. But the army of the Chaldeans pursued after them:  and they took
Sedecias in the plain of the desert of Jericho, and when they had taken
him, they brought him to Nabuchodonosor king of Babylon to Reblatha,
which is in the land of Emath:  and he gave judgment upon him.

39:6. And the king of Babylon slew the sons of Sedecias, in Reblatha,
before his eyes:  and the king of Babylon slew all the nobles of Juda.

39:7. He also put out the eyes of Sedecias:  and bound him with fetters,
to be carried to Babylon.

39:8. And the Chaldeans burnt the king's house, and the houses of the
people with fire, and they threw down the wall of Jerusalem.

39:9. And Nabuzardan the general of the army carried away captive to
Babylon the remnant of the people that remained in the city, and the
fugitives that had gone over to him, and the rest of the people that
remained.

39:10. But Nabuzardan the general left some of the poor people that had
nothing at all, in the land of Juda, and he gave them vineyards, and
cisterns at that time.

39:11. Now Nabuchodonosor king of Babylon had given charge to
Nabuzardan the general concerning Jeremias, saying:

39:12. Take him, and set thy eyes upon him, and do him no harm:  but as
he hath a mind, so do with him.

39:13. Therefore Nabuzardan the general sent, and Nabuzardan, and
Rabsares, and Neregel, and Sereser, and Rebmag, and all the nobles of
the king of Babylon,

39:14. Sent and took Jeremias out of the court of the prison, and
committed him to Godolias the son of Ahicam the son of Saphan, that he
might go home, and dwell among the people.

39:15. But the word of the Lord came to Jeremias, when he was yet shut
up in the court of the prison, saying:  Go, and tell Abdemelech the
Ethiopian, saying:

39:16. Thus saith the Lord of hosts the God of Israel:  Behold I will
bring my words upon this city unto evil, and not unto good:  and they
shall be accomplished in thy sight in that day.

39:17. And I will deliver thee in that day, saith the Lord:  and thou
shalt not be given into the hands of the men whom thou fearest:

39:18. But delivering, I will deliver thee, and thou shalt not fall by
the sword:  but thy life shall be saved for thee, because thou hast put
thy trust in me, saith the Lord.



Jeremias Chapter 40


Jeremias remains with Godolias the governor; who receives all the Jews
that resort to him.

40:1. The word that came to Jeremias from the Lord, after that
Nabuzardan the general had let him go from Rama, when he had taken him,
being bound with chains, among all them that were carried away from
Jerusalem and Juda, and were carried to Babylon.

40:2. And the general of the army taking Jeremias, said to him:  The
Lord thy God hath pronounced this evil upon this place,

40:3. And he hath brought it:  and the Lord hath done as he hath said:
because you have sinned against the Lord, and have not hearkened to his
voice, and this word is come upon you.

40:4. Now then behold I have loosed thee this day from the chains which
were upon thy hands:  if it please thee to come with me to Babylon,
come:  and I will set my eyes upon thee:  but if it do not please thee to
come with me to Babylon, stay here:  behold all the land is before thee,
as thou shalt choose, and whither it shall please thee to go, thither
go.

40:5. And come not with me:  but dwell with Godolias the son of Ahicam
the son of Saphan, whom the king of Babylon hath made governor over the
cities of Juda:  dwell therefore with him in the midst of the people:  or
whithersoever it shall please thee to go, go.  And the general of the
army gave him victuals and presents, and let him go.

40:6. And Jeremias went to Godolias the son of Ahicam to Masphath:  and
dwelt with him in the midst of the people that were left in the land.

40:7. And when all the captains of the army that were scattered through
the countries, they and their companions, had heard that the king of
Babylon had made Godolias the son of Ahicam governor of the country,
and that he had committed unto him men and women, and children, and of
the poor of the land, them that had not been carried away captive to
Babylon:

40:8. They came to Godolias to Masphath:  and Ismahel the son of
Nathanias, and Johanan, and Jonathan, the sons of Caree, and Sareas the
son of Thanehumeth, and the children of Ophi, that were of Netophathi,
and Jezonias the son of Maachati, they and their men.

40:9. And Godolias the son of Ahicam the son of Saphan swore to them
and to their companions, saying:  Fear not to serve the Chaldeans:  dwell
in the land, and serve the king of Babylon, and it shall be well with
you.

40:10. Behold I dwell in Masphath, that I may answer the commandment of
the Chaldeans that are sent to us:  but as for you, gather ye the
vintage, and the harvest, and the oil, and lay it up in your vessels,
and abide in your cities which you hold.

40:11. Moreover all the Jews that were in Moab, and among the children
of Ammon, and in Edom, and in all the countries, when they heard that
the king of Babylon had left a remnant in Judea, and that he had made
Godolias the son of Ahicam the son of Saphan ruler over them:

40:12. All the Jews, I say, returned out of all the places to which
they had fled, and they came into the land of Juda to Godolias to
Masphath:  and they gathered wine, and a very great harvest.

40:13. Then Johanan the son of Caree, and all the captains of the army,
that had been scattered about in the countries, came to Godolias to
Masphath.

40:14. And they said to him:  Know that Baalis the king of the children
of Ammon hath sent Ismahel the son of Nathanias to kill thee.  And
Godolias the son of Ahicam believed them not.

40:15. But Johanan the son of Caree, spoke to Godolias privately in
Masphath, saying:  I will go, and I will kill Ismahel the son of
Nathanias, and no man shall know it, lest he kill thee, and all the
Jews be scattered, that are gathered unto thee, and the remnant of Juda
perish.

40:16. And Godolias the son of Ahicam said to Johanan the son of Caree:
Do not this thing:  for what thou sayst of Ismahel is false.



Jeremias Chapter 41


Godolias is slain:  the Jews that were with him are apprehensive of the
Chaldeans.

41:1. And it came to pass in the seventh month, that Ismahel the son of
Nathanias, the son of Elisama of the royal blood, and the nobles of the
king, and ten men with him, came to Godolias the son of Ahicam into
Masphath:  and they ate bread there together in Masphath.

41:2. And Ismahel the son of Nathanias arose, and the ten men that were
with him, and they struck Godolias the son of Ahicam, the son of Saphan
with the sword, and slew him whom the king of Babylon had made governor
over the land.

41:3. Ismahel slew also all the Jews that were with Godolias in
Masphath, and the Chaldeans that were found there, and the soldiers.

41:4. And on the second day after he had killed Godolias, no man yet
knowing it,

41:5. There came some from Sichem, and from Silo, and from Samaria,
fourscore men, with their beards shaven, and their clothes rent, and
mourning:  and they had offerings and incense in their hand, to offer in
the house of the Lord.

41:6. And Ismahel the son of Nathanias went forth from Masphath to meet
them, weeping all along as he went:  and when he had met them, he said
to them:  Come to Godolias, the son of Ahicam.

41:7. And when they were come to the midst of the city, Ismahel the son
of Nathanias, slew them, and cast them into the midst of the pit, he
and the men that were with him.

41:8. But ten men were found among them, that said to Ismahel:  Kill us
not:  for we have stores in the field, of wheat, and barley, and oil,
and honey.  And he forbore, and slew them not with their brethren.

41:9. And the pit into which Ismahel cast all the dead bodies of the
men whom he slew because of Godolias, is the same that king Asa made,
for fear of Baasa the king of Israel:  the same did Ismahel the son of
Nathanias fill with them that were slain.

41:10. Then Ismahel carried away captive all the remnant of the people
that were in Masphath:  the king's daughters, and all the people that
remained in Masphath:  whom Nabuzardan the general of the army had
committed to Godolias the son of Ahicam.  And Ismahel the son of
Nathanias took them, and he departed, to go over to the children of
Ammon.

41:11. But Johanan the son of Caree, and all the captains of the
fighting men that were with him, heard of the evil that Ismahel the son
of Nathanias had done.

41:12. And taking all the men, they went out to fight against Ismahel
the son of Nathanias, and they found him by the great waters that are
in Gabaon.

41:13. And when all the people that were with Ismahel, had seen Johanan
the son of Caree, and all the captains of the fighting men that were
with him, they rejoiced.

41:14. And all the people whom Ismahel had taken, went back to
Masphath:  and they returned and went to Johanan the son of Caree.

41:15. But Ismahel the son of Nathanias fled with eight men, from the
face of Johanan, and went to the children of Ammon.

41:16. Then Johanan the son of Caree, and all the captains of the
soldiers that were with him, took all the remnant of the people whom
they had recovered from Ismahel the son of Nathanias, from Masphath,
after that he had slain Godolias the son of Ahicam:  valiant men for
war, and the women, and the children, and the eunuchs whom he had
brought back from Gabaon.

41:17. And they departed, and sat as sojourners in Chamaam, which is
near Bethlehem:  in order to go forward, and enter into Egypt,

41:18. From the face of the Chaldeans:  for they were afraid of them,
because Ismahel the son of Nathanias had slain Godolias the son of
Ahicam, whom the king of Babylon had made governor in the land of Juda.



Jeremias Chapter 42


Jeremias assures the remnant of the people, that if they will stay in
Juda, they shall be safe; but if they go down into Egypt, they shall
perish.

42:1. Then all the captains of the warriors, and Johanan the son of
Caree, and Jezonias, the son of Osaias, and the rest of the people from
the least to the greatest came near:

42:2. And they said to Jeremias the prophet:  Let our supplication fall
before thee:  and pray thou for us to the Lord thy God for all this
remnant, for we are left but a few of many, as thy eyes do behold us.

42:3. And let the Lord thy God shew us the way by which we may walk,
and the thing that we must do.

42:4. And Jeremias the prophet said to them:  I have heard you:  behold I
will pray to the Lord your God according to your words:  and whatsoever
thing he shall answer me, I will declare it to you:  and I will hide
nothing from you.

42:5. And they said to Jeremias:  The Lord be witness between us of
truth and faithfulness, if we do not according to every thing for which
the Lord thy God shall send thee to us.

42:6. Whether it be good or evil, we will obey the voice of the Lord
our God, to whom we send thee:  that it may be well with us when we
shall hearken to the voice of the Lord our God.

Good or evil. . .That is, agreeable or disagreeable.

42:7. Now after ten days, the word of the Lord came to Jeremias.

42:8. And he called Johanan the son of Caree, and all the captains of
the fighting men that were with him, and all the people from the least
to the greatest.

42:9. And he said to them:  Thus saith the Lord the God of Israel, to
whom you sent me, to present your supplications before him:

42:10. If you will be quiet and remain in this land, I will build you
up, and not pull you down:  I will plant you, and not pluck you up:  for
now I am appeased for the evil that I have done to you.

I am appeased for the evil that I have done to you. . .That is, I am
appeased, as I have sufficiently punished you, and now I am reconciled
with you.

42:11. Fear not because of the king of Babylon, of whom you are greatly
afraid:  fear him not, saith the Lord:  for I am with you, to save you,
and to deliver you from his hand.

42:12. And I will shew mercies to you, and will take pity on you, and
will cause you to dwell in your own land.

42:13. But if you say:  We will not dwell in this land, neither will we
hearken to the voice of the Lord our God,

42:14. Saying:  No, but we will go into the land of Egypt:  where we
shall see no war, nor hear the sound of the trumpet, nor suffer hunger:
and there we will dwell.

42:15. For this now hear the word of the Lord, ye remnant of Juda:  Thus
saith the Lord of hosts, the God of Israel:  If you set your faces to go
into Egypt, and enter in to dwell there:

42:16. The sword which you fear, shall overtake you there in the land
of Egypt:  and the famine, whereof you are afraid, shall cleave to you
in Egypt, and there you shall die.

42:17. And all the men that set their faces to go into Egypt, to dwell
there, shall die by the sword, and by famine, and by pestilence:  none
of them shall remain, nor escape from the face of the evil that I will
bring upon them.

42:18. For thus saith the Lord of hosts, the God of Israel:  As my anger
and my indignation hath been kindled against the inhabitants of
Jerusalem:  so shall my indignation be kindled against you, when you
shall enter into Egypt, and you shall be an execration, and an
astonishment, and a curse, and a reproach:  and you shall see this place
no more.

42:19. This is the word of the Lord concerning you, O ye remnant of
Juda:  Go ye not into Egypt:  know certainly that I have adjured you this
day.

42:20. For you have deceived your own souls:  for you sent me to the
Lord our God, saying:  Pray for us to the Lord our God, and according to
all that the Lord our God shall say to thee, so declare unto us, and we
will do it.

42:21. And now I have declared it to you this day, and you have not
obeyed the voice of the Lord your God, with regard to all the things
for which he hath sent me to you.

42:22. Now therefore know certainly that you shall die by the sword,
and by famine, and by pestilence in the place to which you desire to go
to dwell there.



Jeremias Chapter 43


The Jews, contrary to the orders of God by the prophet, go into Egypt,
carrying Jeremias with them.  He foretells the devastation of that land
by the king of Babylon.

43:1. And it came to pass, that when Jeremias had made an end of
speaking to the people all the words of the Lord their God, for which
the Lord their God had sent him to them, all these words:

43:2. Azarias the son of Osaias, and Johanan the son of Caree, and all
the proud men, made answer, saying to Jeremias:  Thou tellest a lie:  the
Lord our God hath not sent thee, saying:  Go not into Egypt, to dwell
there.

43:3. But Baruch the son of Nerias setteth thee on against us, to
deliver us into the hands of the Chaldeans, to kill us, and to cause us
to be carried away captives to Babylon.

43:4. So Johanan the son of Caree, and all the captains of the
soldiers, and all the people, obeyed not the voice of the Lord, to
remain in the land of Juda.

43:5. But Johanan the son of Caree, and all the captains of the
soldiers took all the remnant of Juda, that were returned out of all
nations, to which they had before been scattered, to dwell in the land
of Juda:

43:6. Men, and women, and children, and the king's daughters, and every
soul, which Nabuzardan the general had left with Godolias the son of
Ahicam the son of Saphan, and Jeremias the prophet, and Baruch the son
of Nerias.

43:7. And they went into the land of Egypt, for they obeyed not the
voice of the Lord:  and they came as far as Taphnis.

43:8. And the word of the Lord came to Jeremias in Taphnis, saying:

43:9. Take great stones in thy hand, and thou shalt hide them in the
vault that is under the brick wall at the gate of Pharao's house in
Taphnis:  in the sight of the men of Juda.

43:10. And thou shalt say to them:  Thus saith the Lord of hosts the God
of Israel:  Behold I will send, and take Nabuchodonosor the king of
Babylon my servant:  and I will set his throne over these stones which I
have hid, and he shall set his throne over them.

43:11. And he shall come and strike the land of Egypt:  such as are for
death, to death:  and such as are for captivity, to captivity:  and such
as are for the sword, to the sword.

43:12. And he shall kindle a fire in the temples of the gods of Egypt,
and he shall burn them, and he shall carry them away captives:  and he
shall array himself with the land of Egypt, as a shepherd putteth on
his garment:  and he shall go forth from thence in peace.

43:13. And he shall break the statues of the house of the sun, that are
in the land of Egypt; and the temples of the gods of Egypt he shall
burn with fire.



Jeremias Chapter 44


The prophet's admonition to the Jews in Egypt against idolatry is not
regarded:  he denounces to them their destruction.

44:1. The word that came to Jeremias, concerning all the Jews that
dwelt in the land of Egypt, dwelling in Magdal, and in Taphnis, and in
Memphis, and in the land of Phatures, saying:

44:2. Thus saith the Lord of hosts the God of Israel:  You have seen all
this evil that I have brought upon Jerusalem, and upon all the cities
of Juda:  and behold they are desolate this day, and there is not an
inhabitant in them:

44:3. Because of the wickedness which they have committed, to provoke
me to wrath, and to go and offer sacrifice, and worship other gods,
which neither they, nor you, nor your fathers knew.

44:4. And I sent to you all my servants the prophets, rising early, and
sending, and saying:  Do not commit this abominable thing, which I hate.

44:5. But they heard not, nor inclined their ear to turn from their
evil ways, and not to sacrifice to strange gods.

44:6. Wherefore my indignation and my fury was poured forth, and was
kindled in the cities of Juda, and in the streets of Jerusalem:  and
they are turned to desolation and waste, as at this day.

44:7. And now thus saith the Lord of hosts the God of Israel:  Why do
you commit this great evil against your own souls, that there should
die of you man and woman, child and suckling out of the midst of Juda,
and no remnant should be left you:

44:8. In that you provoke me to wrath with the works of your hands, by
sacrificing to other gods in the land of Egypt, into which you are come
to dwell there:  and that you should perish, and be a curse, and a
reproach to all the nations of the earth?

44:9. Have you forgotten the evils of your fathers, and the evils of
the kings of Juda, and the evils of their wives, and your evils, and
the evils of your wives, that they have done in the land of Juda, and
in the streets of Jerusalem?

44:10. They are not cleansed even to this day:  neither have they
feared, nor walked in the law of the Lord, nor in my commandments,
which I set before you and your fathers.

44:11. Therefore thus saith the Lord of hosts the God of Israel:  Behold
I will set my face upon you for evil:  and I will destroy all Juda.

44:12. And I will take the remnant of Juda that have set their faces to
go into the land of Egypt, and to dwell there; and they shall be all
consumed in the land of Egypt:  they shall fall by the sword, and by the
famine:  and they shall be consumed from the least even to the greatest,
by the sword, and by the famine shall they die:  and they shall be for
an execration, and for a wonder, and for a curse, and for a reproach.

44:13. And I will visit them that dwell in the land of Egypt, as I have
visited Jerusalem by the sword, and by famine and by pestilence.

44:14. And there shall be none that shall escape, and remain of the
remnant of the Jews that are gone to sojourn in the land of Egypt:  and
that shall return into the land of Juda, to which they have a desire to
return to dwell there:  there shall none return but they that shall
flee.

44:15. Then all the men that knew that their wives sacrificed to other
gods:  and all the women of whom there stood by a great multitude, and
all the people of them that dwelt in the land of Egypt in Phatures,
answered Jeremias, saying:

44:16. As for the word which thou hast spoken to us in the name of the
Lord, we will not hearken to thee:

44:17. But we will certainly do every word that shall proceed out of
our own mouth, to sacrifice to the queen of heaven, and to pour out
drink offerings to her, as we and our fathers have done, our kings, and
our princes in the cities of Juda, and in the streets of Jerusalem:  and
we were filled with bread, and it was well with us, and we saw no evil.

The queen of heaven. . .The moon, which they worshipped under this name.

44:18. But since we left off to offer sacrifice to the queen of heaven,
and to pour out frank offerings to her, we have wanted all things, and
have been consumed by the sword, and by famine.

44:19. And if we offer sacrifice to the queen of heaven, and pour out
drink offerings to her:  did we make cakes to worship her, to pour out
drink offerings to her, without our husbands?

44:20. And Jeremias spoke to all the people, to the men, and to the
women, and to all the people which had given him that answer, saying:

44:21. Was it not the sacrifice that you offered in the cities of Juda,
and in the streets of Jerusalem, you and your fathers, your kings, and
your princes, and the people of the land, which the Lord hath
remembered, and hath it not entered into his heart?

44:22. So that the Lord could no longer bear, because of the evil of
your doings, and because of the abominations which you have committed:
therefore your land is become a desolation, and an astonishment, and a
curse, without an inhabitant, as at this day.

44:23. Because you have sacrificed to idols, and have sinned against
the Lord:  and have not obeyed the voice of the Lord, and have not
walked in his law, and in his commandments, and in his testimonies:
therefore are these evils come upon you, as at this day.

44:24. And Jeremias said to all the people and to all the women:  Hear
ye the word of the Lord, all Juda, you that dwell in the land of Egypt:

44:25. Thus saith the Lord of hosts the God of Israel, saying:  You and
your wives have spoken with your mouth, and fulfilled with your hands,
saying:  Let us perform our vows which we have made, to offer sacrifice
to the queen of heaven, and to pour out drink offerings to her:  you
have fulfilled your vows, and have performed them indeed.

44:26. Therefore hear ye the word of the Lord, all Juda, you that dwell
in the land of Egypt:  Behold I have sworn by my great name, saith the
Lord:  that my name shall no more be named in the mouth of any man of
Juda, in the land of Egypt, saying:  The Lord God liveth.

44:27. Behold I will watch over them for evil, and not for good:  and
all the men of Juda that are in the land of Egypt, shall be consumed,
by the sword, and by famine, till there be an end of them.

44:28. And a few men that shall flee from the sword, shall return out
of the land of Egypt into the land of Juda:  and all the remnant of Juda
that are gone into the land of Egypt to dwell there, shall know whose
word shall stand, mine, or theirs.

44:29. And this shall be a sign to you, saith the Lord, that I will
punish you in this place:  that you may know that my words shall be
accomplished indeed against you for evil.

44:30. Thus saith the Lord:  Behold I will deliver Pharao Nechao king of
Egypt into the hand of his enemies, and into the hand of them that seek
his life:  as I delivered Sedecias king of Juda into the land of
Nabuchodonosor the king of Babylon his enemy, and that sought his life.



Jeremias Chapter 45


The prophet comforts Baruch in his affliction.

45:1. The word that Jeremias the prophet spoke to Baruch the son of
Nerias, when he had written these words in a book, out of the mouth of
Jeremias, in the fourth year of Joakim the son of Josias king of Juda,
saying:

45:2. Thus saith the Lord the God of Israel to thee, Baruch:

45:3. Thou hast said:  Woe is me, wretch that I am, for the Lord hath
added sorrow to my sorrow:  I am wearied with my groans, and I find no
rest.

45:4. Thus saith the Lord:  Thus shalt thou say to him:  Behold, them
whom I have built, I do destroy:  and them whom I have planted, I do
pluck up, and all this land.

45:5. And dost thou seek great things for thyself?  Seek not:  for behold
I will bring evil upon all flesh, saith the Lord! but I will give thee
thy life, and save thee in all places whithersoever thou shalt go.



Jeremias Chapter 46


A prophecy against Egypt.  The Jews shall return from captivity.

46:1. The word of the Lord that came to Jeremias the prophet against
the Gentiles,

46:2. Against Egypt, against the army of Pharao Nechao king of Egypt,
which was by the river Euphrates in Charcamis, whom Nabuchodonosor the
king of Babylon defeated, in the fourth year of Joakim the son of
Josias king of Juda.

46:3. Prepare ye the shield and buckler, and go forth to battle.

46:4. Harness the horses, and get up, ye horsemen:  stand forth with
helmets, furbish the spears, put on coats of mail.

46:5. What then?  I have seen them dismayed, and turning their backs,
their valiant ones slain:  they fled apace, and they looked not back:
terror was round about, saith the Lord.

46:6. Let not the swift flee away, nor the strong think to escape:  they
are overthrown, and fallen down, towards the north by the river
Euphrates.

46:7. Who is this that cometh up as a flood:  and his streams swell like
those of rivers?

46:8. Egypt riseth up like a flood, and the waves thereof shall be
moved as rivers, and he shall say:  I will go up and will cover the
earth:  I will destroy the city, and its inhabitants.

46:9. Get ye up on horses, and glory in chariots, and let the valiant
men come forth, the Ethiopians, and the Libyans that hold the shield,
and the Lydians that take, and shoot arrows.

46:10. For this is the day of the Lord the God of hosts, a day of
vengeance, that he may revenge himself of his enemies:  the sword shall
devour, and shall be filled, and shall be drunk with their blood:  for
there is a sacrifice of the Lord God of hosts in the north country, by
the river Euphrates.

46:11. Go up into Galaad, and take balm, O virgin daughter of Egypt:  in
vain dost thou multiply medicines, there shall be no cure for thee.

46:12. The nations have heard of thy disgrace, and thy howling hath
filled the land:  for the strong hath stumbled against the strong, and
both are fallen together.

46:13. The word that the Lord spoke to Jeremias the prophet, how
Nabuchodonosor king of Babylon should come and strike the land of
Egypt:

46:14. Declare ye to Egypt, and publish it in Magdal, and let it be
known in Memphis, and in Taphnis:  say ye:  Stand up, and prepare
thyself:  for the sword shall devour all round about thee.

46:15. Why are thy valiant men come to nothing?  they stood not:  because
the Lord hath overthrown them.

46:16. He hath multiplied them that fall, and one hath fallen upon
another, and they shall say:  Arise, and let us return to our own
people, and to the land of our nativity, from the sword of the dove.

The dove. . .See the annotation on chap. 25., ver. 38.

46:17. Call ye the name of Pharao king of Egypt, a tumult time hath
brought.

46:18. As I live, saith the King, (whose name is the Lord of hosts,) as
Thabor is among the mountains, and as Carmel by the sea, so shall he
come.

46:19. Furnish thyself to go into captivity, thou daughter inhabitant
of Egypt:  for Memphis shall be made desolate, and shall be forsaken and
uninhabited.

46:20. Egypt is like a fair and beautiful heifer:  there shall come from
the north one that shall goad her.

46:21. Her hirelings also that lived in the midst of her, like fatted
calves are turned back, and are fled away together, and they could not
stand, for the day of their slaughter is come upon them, the time of
their visitation.

46:22. Her voice shall sound like brass, for they shall hasten with an
army, and with axes they shall come against her, as hewers of wood.

46:23. They have cut down her forest, saith the Lord, which cannot be
counted:  they are multiplied above locusts, and are without number.

46:24. The daughter of Egypt is confounded, and delivered into the hand
of the people of the north.

46:25. The Lord of hosts the God of Israel hath said:  Behold I will
visit upon the tumult of Alexandria, and upon Pharao, and upon Egypt,
and upon her gods, and upon her kings, and upon Pharao, and upon them
that trust in him.

Visit upon. . .That is, punish.--Ibid.  Alexandria. . .In the Hebrew, No,
which was the ancient name of the city, to which Alexander gave
afterwards the name of Alexandria.

46:26. And I will deliver them into the hand of them that seek their
lives, and into the hand of Nabuchodonosor king of Babylon, and into
the hand of his servants:  and afterwards it shall be inhabited, as in
the days of old, saith the Lord.

46:27. And thou my servant Jacob, fear not and be not thou dismayed, O
Israel:  for behold I will save thee from afar off, and thy seed out of
the land of thy captivity:  and Jacob shall return and be at rest, and
prosper:  and there shall be none to terrify him.

46:28. And thou, my servant Jacob, fear not, saith the Lord:  because I
am with thee, for I will consume all the nations to which I have cast
thee out:  but thee I will not consume, but I will correct thee in
judgment, neither will I spare thee as if thou wert innocent.



Jeremias Chapter 47


A prophecy of the desolation of the Philistines, of Tyre, Sidon, Gaza,
and Ascalon.

47:1. The word of the Lord that came to Jeremias the prophet against
the people of Palestine, before Pharao took Gaza.

47:2. Thus saith the Lord:  Behold there come up waters out of the
north, and they shall be as an overflowing torrent, and they shall
cover the land, and all that is therein, the city and the inhabitants
thereof:  then the men shall cry, and all the inhabitants of the land
shall howl,

47:3. At the noise of the marching of arms, and of his soldiers, at the
rushing of his chariots, and the multitude of his wheels.  The fathers
have not looked back to the children, for feebleness of hands,

47:4. Because of the coming of the day, in which all the Philistines
shall be laid waste, and Tyre and Sidon shall be destroyed, with all
the rest of their helpers.  For the Lord hath wasted the Philistines,
the remnant of the isle of Cappadocia.

47:5. Baldness is come upon Gaza:  Ascalon hath held her peace with the
remnant of their valley:  how long shalt thou cut thyself?

47:6. O thou sword of the Lord, how long wilt thou not be quiet?  Go
into thy scabbard, rest, and be still.

47:7. How shall it be quiet, when the Lord hath given it a charge
against Ascalon, and against the countries thereof by the sea side, and
there hath made an appointment for it?



Jeremias Chapter 48


A prophecy of the desolation of Moab for their pride:  but their
captivity shall at last be released.

48:1. Against Moab thus saith the Lord of hosts the God of Israel:  Woe
to Nabo, for it is laid waste, and confounded:  Cariathaim is taken:  the
strong city is confounded and hath trembled.

48:2. There is no more rejoicing in Moab over Hesebon:  they have
devised evil.  Come, and let us cut it off from being a nation.
Therefore shalt thou in silence hold thy peace, and the sword shall
follow thee.

48:3. A voice of crying from Oronaim:  waste, and great destruction.

48:4. Moab is destroyed:  proclaim a cry for her little ones.

48:5. For by the ascent of Luith shall the mourner go up with weeping:
for in the descent of Oronaim the enemies have heard a howling of
destruction.

48:6. Flee, save your lives:  and be as heath in the wilderness.

48:7. For because thou hast trusted in thy bulwarks, and in thy
treasures, thou also shalt be taken:  and Chamos shall go into
captivity, his priests, and his princes together.

Chamos. . .The idol of the Moabites.

48:8. And the spoiler shall come upon every city, and no city shall
escape:  and the valleys shall perish, and the plains shall be
destroyed, for the Lord hath spoken:

48:9. Give a flower to Moab, for in its flower it shall go out:  and the
cities thereof shall be desolate, and uninhabited.

48:10. Cursed be he that doth the work of the Lord deceitfully:  and
cursed be he that withholdeth his sword from blood.

Deceitfully. . .In the Greek, negligently.  The work of God here spoken
of, is the punishment of the Moabites.

48:11. Moab hath been fruitful from his youth, and hath rested upon his
lees:  and hath not been poured out from vessel to vessel, nor hath gone
into captivity:  therefore his taste hath remained in him, and his scent
is not changed.

Moab hath been fruitful. . .That is, rich and flourishing.  And hath
rested upon his lees. . .That is, remained in its bad morals; as wine
not decanted has its lees mixed and remains muddy.

48:12. Therefore behold the days come, saith the Lord, and I will send
him men that shall order and overturn his bottles, and they shall cast
him down, and shall empty his vessels, and break their bottles one
against another.

48:13. And Moab shall be ashamed of Chamos, as the house of Israel was
ashamed of Bethel, in which they trusted.

Of Bethel. . .That is, of their golden calf which they worshipped in
Bethel.

48:14. How do you say:  We are valiant and stout men in battle?

48:15. Moab is laid waste, and they have cast down her cities:  and her
choice young men are gone down to the slaughter:  saith the king, whose
name is the Lord of hosts.

48:16. The destruction of Moab is near to come:  the calamity thereof
shall come on exceeding swiftly.

48:17. Comfort him, all you that are round about him, and all you that
know his name, say:  How is the strong staff broken, the beautiful rod?

48:18. Come down from thy glory, and sit in thirst, O dwelling of the
daughter of Dibon:  because the spoiler of Moab is come up to thee, he
hath destroyed thy bulwarks.

48:19. Stand in the way, and look out, O habitation of Aroer:  inquire
of him that fleeth:  and say to him that hath escaped:  What is done?

48:20. Moab is confounded, because he is overthrown:  howl ye, and cry,
tell ye it in Arnon, that Moab is wasted.

48:21. And judgment is come upon the plain country:  upon Helon, and
upon Jasa, and upon Mephaath.

48:22. And upon Dibon, and upon Nabo, and upon the house of Deblathaim,

48:23. And upon Cariathaim, and upon Bethgamul, and upon Bethmaon,

48:24. And upon Carioth, and upon Bosra:  and upon all the cities of the
land of Moab, far or near.

48:25. The horn of Moab is cut off, and his arm is broken, saith the
Lord.

The horn of Moab is cut off. . .That is, the strength of Moab is cut
off.  A metaphor drawn from animals whose strength is in their horns.

48:26. Make him drunk, because he lifted up himself against the Lord:
and Moab shall dash his hand in his own vomit, and he also shall be in
derision.

48:27. For Israel hath been a derision unto them:  as though thou hadst
found him amongst thieves:  for thy words therefore, which thou hast
spoken against him, thou shalt be led away captive.

48:28. Leave the cities, and dwell in the rock, you that dwell in Moab:
and be ye like the dove that maketh her nest in the mouth of the hole
in the highest place.

48:29. We have heard the pride of Moab, he is exceeding proud:  his
haughtiness, and his arrogancy, and his pride, and the loftiness of his
heart.

48:30. I know, saith the Lord, his boasting, and that the strength
thereof is not according to it, neither hath it endeavoured to do
according as it was able.

48:31. Therefore will I lament for Moab, and I will cry out to all
Moab, for the men of the brick wall that mourn.

48:32. O vineyard of Sabama, I will weep for thee, with the mourning of
Jazer:  thy branches are gone over the sea, they are come even to the
sea of Jazer:  the robber hath rushed in upon thy harvest and thy
vintage.

48:33. Joy and gladness is taken away from Carmel, and from the land of
Moab, and I have taken away the wine out of the presses:  the treader of
the grapes shall not sing the accustomed cheerful tune.

48:34. From the cry of Hesebon even to Eleale, and to Jasa, they have
uttered their voice:  from Segor to Oronaim, as a heifer of three years
old:  the waters also of Nemrim shall be very bad.

48:35. And I will take away from Moab, saith the Lord, him that
offereth in the high places, and that sacrificeth to his gods.

48:36. Therefore my heart shall sound for Moab like pipes and my heart
shall sound like pipes for the men of the brick wall:  because he hath
done more than he could, therefore they have perished.

48:37. For every head shall be bald, and every beard shall be shaven:
all hands shall be tied together, and upon every back there shall be
haircloth.

48:38. Upon all the housetops of Moab, and in the streets thereof
general mourning:  because I have broken Moab as an useless vessel,
saith the Lord.

48:39. How is it overthrown, and they have howled!  How hath Moab bowed
down the neck, and is confounded!  And Moab shall be a derision, and an
example to all round about him.

48:40. Thus saith the Lord:  Behold he shall fly as an eagle, and shall
stretch forth his wings to Moab.

48:41. Carioth is taken, and the strongholds are won:  and the heart of
the valiant men of Moab in that day shall be as the heart of a woman in
labour.

48:42. And Moab shall cease to be a people:  because he hath gloried
against the Lord.

48:43. Fear, and the pit, and the snare come upon thee, O inhabitant of
Moab, saith the Lord.

Fear. . .That is, the sword of the enemy.  The pit. . .That is,
unforeseen calamities.  The snare. . .That is, the ambushes laid by the
enemy.

48:44. He that shall flee from the fear, shall fall into the pit:  and
he that shall get up out of the pit, shall be taken in the snare:  for I
will bring upon Moab the year of their visitation, saith the Lord.

48:45. They that fled from the snare stood in the shadow of Hesebon:
but there came a fire out of Hesebon, and a flame out of the midst of
Seon, and it shall devour part of Moab, and the crown of the head of
the children of tumult.

48:46. Woe to thee, Moab, thou hast persisted, O people of Chamos:  for
thy sons, and thy daughters are taken captives.

48:47. And I will bring back the captivity of Moab in the last days,
saith the Lord.  Hitherto the judgments of Moab.



Jeremias Chapter 49


The like desolation of Ammon, of Idumea, of the Syrians, of the
Agarenes, and of the Elamites.

49:1. Against the children of Ammon.  Thus saith the Lord:  Hath Israel
no sons?  or hath he no heir?  Why then hath Melchom inherited Gad:  and
his people dwelt in his cities?

Melchom. . .The idol of the Ammonites.

49:2. Therefore behold the days come, saith the Lord, and I will cause
the noise of war to be heard in Rabbath of the children of Ammon, and
it shall be destroyed into a heap, and her daughters shall be burnt
with fire, and Israel shall possess them that have possessed him, saith
the Lord.

49:3. Howl, O Hesebon, for Hai is wasted.  Cry, ye daughters of Rabbath,
gird yourselves with haircloth:  mourn and go about by the hedges:  for
Melchom shall be carried into captivity, his priests, and his princes
together.

49:4. Why gloriest thou in the valleys?  thy valley hath flowed away, O
delicate daughter, that hast trusted in thy treasures, and hast said:
Who shall come to me?

49:5. Behold I will bring a fear upon thee, saith the Lord God of
hosts, from all that are round about thee:  and you shall be scattered
every one out of one another's sight, neither shall there be any to
gather together them that flee.

49:6. And afterwards I will cause the captives of the children of Ammon
to return, saith the Lord.

49:7. Against Edom.  Thus saith the Lord of hosts:  Is wisdom no more in
Theman?  counsel is perished from her children:  their wisdom is become
unprofitable.

49:8. Flee and turn your backs, go down into the deep hole, ye
inhabitants of Dedan:  for I have brought the destruction of Esau upon
him, the time of his visitation.

49:9. If grapegatherers had come to thee, would they not have left a
bunch?  if thieves in the night, they would have taken what was enough
for them.

49:10. But I have made Esau bare, I have revealed his secrets, and he
cannot be hid:  his seed is laid waste, and his brethren, and his
neighbours, and he shall not be.

49:11. Leave thy fatherless children:  I will make them live:  and thy
widows shall hope in me.

49:12. For thus saith the Lord:  Behold they whose judgment was not to
drink of the cup, shall certainly drink:  and shalt thou come off as
innocent?  thou shalt not come off as innocent, but drinking thou shalt
drink.

49:13. For I have sworn by myself, saith the Lord, that Bosra shall
become a desolation, and a reproach, and a desert, and a curse:  and all
her cities shall be everlasting wastes.

49:14. I have heard a rumour from the Lord, and an ambassador is sent
to the nations:  Gather yourselves together, and come against her, and
let us rise up to battle.

49:15. For behold I have made thee a little one among the nations,
despicable among men.

49:16. Thy arrogancy hath deceived thee, and the pride of thy heart:  O
thou that dwellest in the clefts of the rock, and endeavourest to lay
hold on the height of the hill:  but though thou shouldst make thy nest
as high as an eagle, I will bring thee down from thence, saith the
Lord.

49:17. And Edom shall be desolate:  every one that shall pass by it,
shall be astonished, and shall hiss at all its plagues.

49:18. As Sodom was overthrown and Gomorrha, and the neighbours
thereof, saith the Lord:  there shall not a man dwell there, and there
shall no son of man inhabit it.

49:19. Behold one shall come up as a lion from the swelling of the
Jordan, against the strong and beautiful:  for I will make him run
suddenly upon her:  and who shall be the chosen one whom I may appoint
over her?  for who is like to me?  and who shall abide me?  and who is
that shepherd that can withstand my countenance?

49:20. Therefore hear ye the counsel of the Lord, which he hath taken
concerning Edom:  and his thoughts which he hath thought concerning the
inhabitants of Theman:  surely the little ones of the flock shall cast
them down, of a truth they shall destroy them with their habitation.

49:21. The earth is moved at the noise of their fall:  the cry of their
voice is heard in the Red Sea.

49:22. Behold he shall come up as an eagle, and fly:  and he shall
spread his wings over Bosra:  and in that day the heart of the valiant
ones of Edom shall be as the heart of a woman in labour.

49:23. Against Damascus.  Emath is confounded and Arphad:  for they have
heard very bad tidings, they are troubled as in the sea:  through care
they could not rest.

49:24. Damascus is undone, she is put to flight, trembling hath seized
on her:  anguish and sorrows have taken her as a woman in labour.

49:25. How have they forsaken the city of renown, the city of joy!

49:26. Therefore her young men shall fall in her streets:  and all the
men of war shall be silent in that day, saith the Lord of hosts.

49:27. And I will kindle a fire in the wall of Damascus, and it shall
devour the strong holds of Benadad.

49:28. Against Cedar and against the kingdoms of Asor, which
Nabuchodonosor king of Babylon destroyed.  Thus saith the Lord:  Arise,
and go ye up to Cedar, and waste the children of the east.

Cedar and Asor. . .Were parts of Arabia; which with Moab, Ammon, Edom,
etc., were all brought under the yoke of Nabuchodonosor.

49:29. They shall take their tents, and their flocks:  and shall carry
off for themselves their curtains, and all their vessels, and their
camels:  and they shall call fear upon them round about.

49:30. Flee ye, get away speedily, sit in deep holes, you that inhabit
Asor, saith the Lord:  for Nabuchodonosor king of Babylon hath taken
counsel against you, and hath conceived designs against you.

49:31. Arise, and go up to a nation that is at ease, and that dwelleth
securely, saith the Lord:  they have neither gates, nor bars:  they dwell
alone.

49:32. And their camels shall be for a spoil and the multitude of their
cattle for a booty, and I will scatter into every wind them that have
their hair cut round, and I will bring destruction upon them from all
their confines, saith the Lord.

49:33. And Asor shall be a habitation for dragons, desolate for ever:
no man shall abide there, nor son of man inhabit it.

49:34. The word of the Lord that came to Jeremias the prophet against
Elam, in the beginning of the reign of Sedecias king of Juda, saying:

Elam. . .A part of Persia.

49:35. Thus saith the Lord of hosts:  Behold I will break the bow of
Elam, and their chief strength.

49:36. And I will bring upon Elam the four winds from the four quarters
of heaven:  and I will scatter them into all these winds:  and there
shall be no nation, to which the fugitives of Elam shall not come.

49:37. And I will cause Elam to be afraid before their enemies, and in
the sight of them that seek their life:  and I will bring evil upon
them, my fierce wrath, saith the Lord:  and I will send the sword after
them, till I consume them.

49:38. And I will set my throne in Elam, and destroy kings and princes
from thence, saith the Lord.

49:39. But in the latter days I will cause the captives of Elam, to
return, saith the Lord.



Jeremias Chapter 50


Babylon, which hath afflicted the Israelites, after their restoration,
shall be utterly destroyed.

50:1. The word that the Lord hath spoken against Babylon, and against
the land of the Chaldeans in the hand of Jeremias the prophet.

50:2. Declare ye among the nations, and publish it, lift up a standard:
proclaim, and conceal it not:  say:  Babylon is taken, Bel is confounded,
Merodach is overthrown, their graven things are confounded, their idols
are overthrown.

Bel, etc. . .Bel and Merodach were worshipped for gods by the men of
Babylon.

50:3. For a nation is come up against her out of the north, which shall
make her land desolate:  and there shall be none to dwell therein, from
man even to beast:  yea they are removed, and gone away.

A nation, etc. . .Viz., the Medes.

50:4. In those days, and at that time, saith the Lord, the children of
Israel shall come, they and the children of Juda together:  going and
weeping they shall make haste, and shall seek the Lord their God.

50:5. They shall ask the way to Sion, their faces are hitherward.  They
shall come, and shall be joined to the Lord by an everlasting covenant,
which shall never be forgotten.

50:6. My people have been a lost flock, their shepherds have caused
them to go astray, and have made them wander in the mountains:  they
have gone from mountain to hill, they have forgotten their resting
place.

50:7. All that found them, have devoured them:  and their enemies said:
We have not sinned in so doing:  because they have sinned against the
Lord the beauty of justice, and against the Lord the hope of their
fathers.

50:8. Remove out of the midst of Babylon, and go forth out of the land
of the Chaldeans:  and be ye as kids at the head of the flock.

50:9. For behold I raise up, and will bring against Babylon an assembly
of great nations from the land of the north:  and they shall be prepared
against her, and from thence she shall be taken:  their arrows, like
those of a mighty man, a destroyer, shall not return in vain.

50:10. And Chaldea shall be made a prey:  all that waste her shall be
filled, saith the Lord.

50:11. Because you rejoice, and speak great things, pillaging my
inheritance:  because you are spread abroad as calves upon the grass,
and have bellowed as bulls.

50:12. Your mother is confounded exceedingly, and she that bore you is
made even with the dust:  behold she shall be the last among the
nations, a wilderness unpassable, and dry.

50:13. Because of the wrath of the Lord it shall not be inhabited, but
shall be wholly desolate:  every one that shall pass by Babylon, shall
be astonished, and shall hiss at all her plagues.

50:14. Prepare yourselves against Babylon round about, all you that
bend the bow:  fight against her, spare not arrows:  because she hath
sinned against the Lord.

50:15. Shout against her, she hath every where given her hand, her
foundations are fallen, her walls are thrown down, for it is the
vengeance of the Lord.  Take vengeance upon her:  as she hath done, so do
to her.

50:16. Destroy the sower out of Babylon, and him that holdeth the
sickle in the time of harvest:  for fear of the sword of the dove every
man shall return to his people, and every one shall flee to his own
land.

The dove. . .Or the destroyer; for the Hebrew word signifies either the
one or the other.

50:17. Israel is a scattered flock, the lions have driven him away:
first the king of Assyria devoured him:  and last this Nabuchodonosor
king of Babylon hath broken his bones.

50:18. Therefore thus saith the Lord of hosts the God of Israel:  Behold
I will visit the king of Babylon and his land, as I have visited the
king of Assyria.

50:19. And I will bring Israel again to his habitation:  and he shall
feed on Carmel, and Bason, and his soul shall be satisfied in mount
Ephraim, and Galaad.

50:20. In those days, and at that time, saith the Lord, the iniquity of
Israel shall be sought for, and there shall be none:  and the sin of
Juda, and there shall none be found:  for I will be merciful to them,
whom I shall leave.

50:21. Go up against the land of the rulers, and punish the inhabitants
thereof, waste, and destroy all behind them, saith the Lord:  and do
according to all that I have commanded thee.

50:22. A noise of war in the land, and a great destruction.

50:23. How is the hammer of the whole earth broken, and destroyed! how
is Babylon turned into a desert among the nations!

50:24. I have caused thee to fall into a snare, and thou art taken, O
Babylon, and thou wast not aware of it:  thou art found and caught,
because thou hast provoked the Lord.

50:25. The Lord hath opened his armoury, and hath brought forth the
weapons of his wrath:  for the Lord the God of hosts hath a work to be
done in the land of the Chaldeans.

50:26. Come ye against her from the uttermost borders:  open that they
may go forth that shall tread her down:  take the stones out of the way,
and make heaps, and destroy her:  and let nothing of her be left.

50:27. Destroy all her valiant men, let them go down to the slaughter:
woe to them, for their day is come, the time of their visitation.

50:28. The voice of them that flee, and of them that have escaped out
of the land of Babylon:  to declare in Sion the revenge of the Lord our
God, the revenge of his temple.

50:29. Declare to many against Babylon, to all that bend the bow:  stand
together against her round about, and let none escape; pay her
according to her work:  according to all that she hath done, do ye to
her:  for she hath lifted up herself against the Lord, against the Holy
One of Israel.

50:30. Therefore shall her young men fall in her streets:  and all her
men of war shall hold their peace in that day, saith the Lord.

50:31. Behold I come against thee, O proud one, saith the Lord the God
of hosts:  for thy day is come, the time of thy visitation.

50:32. And the proud one shall fall, he shall fall down, and there
shall be none to lift him up:  and I will kindle a fire in his cities,
and it shall devour all round about him.

50:33. Thus saith the Lord of hosts:  The children of Israel, and the
children of Juda are oppressed together:  all that have taken them
captives, hold them fast, they will not let them go.

50:34. Their redeemer is strong, the Lord of hosts is his name:  he will
defend their cause in judgment, to terrify the land, and to disquiet
the inhabitants of Babylon.

50:35. A sword is upon the Chaldeans, saith the Lord, and upon the
inhabitants of Babylon, and upon her princes, and upon her wise men.

50:36. A sword upon her diviners, and they shall be foolish:  a sword
upon her valiant ones, and they shall be dismayed.

50:37. A sword upon their horses, and upon their chariots, and upon all
the people that are in the midst of her:  and they shall become as
women:  a sword upon her treasures, and they shall be made a spoil.

50:38. A drought upon her waters, and they shall be dried up:  because
it is a land of idols, and they glory in monstrous things.

50:39. Therefore shall dragons dwell there with the fig fauns:  and
ostriches shall dwell therein, and it shall be no more inhabited for
ever, neither shall it be built up from generation to generation.

Fig fauns. . .Monsters of the desert, or demons in monstrous shapes:
such as the ancients called fauns and satyrs; and as they imagined them
to live upon wild figs, they called them fauni ficarii or fig fauns.

50:40. As the Lord overthrew Sodom and Gomorrha, and their neighbour
cities, saith the Lord:  no man shall dwell there, neither shall the son
of man inhabit it.

50:41. Behold a people cometh from the north, and a great nation, and
many kings shall rise from the ends of the earth.

50:42. They shall take the bow and the shield:  they are cruel and
unmerciful:  their voice shall roar like the sea, and they shall ride
upon horses:  like a man prepared for battle against thee, O daughter of
Babylon.

50:43. The king of Babylon hath heard the report of them, and his hands
are grown feeble:  anguish hath taken hold of him, pangs as a woman in
labour.

50:44. Behold he shall come up like a lion from the swelling of the
Jordan to the strong and beautiful:  for I will make him run suddenly
upon her:  and who shall be the chosen one whom I may appoint over her?
for who is like to me?  and who shall bear up against me?  and who is
that shepherd that can withstand my countenance?

50:45. Therefore hear ye the counsel of the Lord, which he hath taken
against Babylon:  and his thoughts which he hath thought against the
land of the Chaldeans:  surely the little ones of the flocks shall pull
them down, of a truth their habitation shall be destroyed with them.

50:46. At the noise of the taking of Babylon the earth is moved, and
the cry is heard amongst the nations.



Jeremias Chapter 51


The miseries that shall fall upon Babylon from the Medes:  the
destruction of her idols.

51:1. Thus saith the Lord:  Behold I will raise up as it were a
pestilential wind against Babylon and against the inhabitants thereof,
who have lifted up their heart against me.

51:2. And I will send to Babylon fanners, and they shall fan her, and
shall destroy her land:  for they are come upon her on every side in the
day of her affliction.

51:3. Let not him that bendeth, bend his bow, and let not him go up
that is armed with a coat of mail:  spare not her young men, destroy all
her army.

51:4. And the slain shall fall in the land of the Chaldeans, and the
wounded in the regions thereof.

51:5. For Israel and Juda have not been forsaken by their God the Lord
of hosts:  but their land hath been filled with sin against the Holy One
of Israel.

51:6. Flee ye from the midst of Babylon, and let every one save his own
life:  be not silent upon her iniquity:  for it is the time of revenge
from the Lord, he will render unto her what she hath deserved.

51:7. Babylon hath been a golden cup in the hand of the Lord, that made
all the earth drunk:  the nations have drunk of her wine, and therefore
they have staggered.

51:8. Babylon is suddenly fallen, and destroyed:  howl for her, take
balm for her pain, if so she may be healed.

51:9. We would have cured Babylon, but she is not healed:  let us
forsake her, and let us go every man to his own land:  because her
judgment hath reached even to the heavens, and is lifted up to the
clouds.

51:10. The Lord hath brought forth our justices:  Come, and let us
declare in Sion the work of the Lord our God.

51:11. Sharpen the arrows, fill the quivers, the Lord hath raised up
the spirit of the kings of the Medes:  and his mind is against Babylon
to destroy it, because it is the vengeance of the Lord, the vengeance
of his temple.

51:12. Upon the walls of Babylon set up the standard, strengthen the
watch:  set up the watchmen, prepare the ambushes:  for the Lord hath
both purposed, and done all that he spoke against the inhabitants of
Babylon.

51:13. O thou that dwellest upon many waters, rich in treasures, thy
end is come for thy entire destruction.

51:14. The Lord of hosts hath sworn by himself, saying:  I will fill
thee with men as with locusts, and they shall lift up a joyful shout
against thee.

51:15. He that made the earth by his power, that hath prepared the
world by his wisdom, and stretched out the heavens by his
understanding.

51:16. When he uttereth his voice the waters are multiplied in heaven:
he lifteth up the clouds from the ends of the earth, he hath turned
lightning into rain:  and hath brought forth the wind out of his
treasures.

51:17. Every man is become foolish by his knowledge:  every founder is
confounded by his idol, for what he hath cast is a lie, and there is no
breath in them.

51:18. They are vain works, and worthy to be laughed at, in the time of
their visitation they shall perish.

51:19. The portion of Jacob is not like them:  for he that made all
things he it is, and Israel is the sceptre of his inheritance:  the Lord
of hosts is his name.

51:20. Thou dashest together for me the weapons of war, and with thee I
will dash nations together, and with thee I will destroy kingdoms:

51:21. And with thee I will break in pieces the horse, and his rider,
and with thee I will break in pieces the chariot, and him that getteth
up into it:

51:22. And with thee I will break in pieces man and woman, and with
thee I will break in pieces the old man and the child, and with thee I
will break in pieces the young man and the virgin:

51:23. And with thee I will break in pieces the shepherd and his flock,
and with thee I will break in pieces the husbandman and his yoke of
oxen, and with thee I will break in pieces captains and rulers.

51:24. And I will render to Babylon, and to all the inhabitants of
Chaldea all their evil, that they have done in Sion, before your eyes,
saith the Lord.

51:25. Behold I come against thee, thou destroying mountain, saith the
Lord, which corruptest the whole earth:  and I will stretch out my hand
upon thee, and will roll thee down from the rocks, and will make thee a
burnt mountain.

51:26. And they shall not take of thee a stone for the corner, nor a
stone for foundations, but thou shalt be destroyed for ever, saith the
Lord.

51:27. Set ye up a standard in the land:  sound with the trumpet among
the nations:  prepare the nations against her:  call together against her
the kings of Ararat, Menni, and Ascenez:  number Taphsar against her,
bring the horse as the stinging locust.

51:28. Prepare the nations against her, the kings of Media, their
captains, and all their rulers, and all the land of their dominion.

51:29. And the land shall be in a commotion, and shall be troubled:  for
the design of the Lord against Babylon shall awake, to make the land of
Babylon desert and uninhabitable.

51:30. The valiant men of Babylon have forborne to fight, they have
dwelt in holds:  their strength hath failed, and they are become as
women:  her dwelling places are burnt, her bars are broken.

51:31. One running post shall meet another, and messenger shall meet
messenger:  to tell the king of Babylon that his city is taken from one
end to the other:

51:32. And that the fords are taken, and the marshes are burnt with
fire, and the men of war are affrighted.

51:33. For thus saith the Lord of hosts the God of Israel:  The daughter
of Babylon is like a thrashingfloor, this is the time of her thrashing:
yet a little while, and the time of her harvest shall come.

51:34. Nabuchodonosor king of Babylon hath eaten me up, he hath
devoured me:  he hath made me as an empty vessel:  he hath swallowed me
up like a dragon, he hath filled his belly with my delicate meats, and
he hath cast me out.

51:35. The wrong done to me, and my flesh be upon Babylon, saith the
habitation of Sion:  and my blood upon the inhabitants of Chaldea, saith
Jerusalem.

51:36. Therefore thus saith the Lord:  Behold I will judge thy cause,
and will take vengeance for thee, and I will make her sea desolate, I
and will dry up her spring.

51:37. And Babylon shall be reduced to heaps, a dwelling place for
dragons, an astonishment and a hissing, because there is no inhabitant.

51:38. They shall roar together like lions, they shall shake their
manes like young lions.

51:39. In their heat I will set them drink:  and I will make them drunk,
that they may slumber, and sleep an everlasting sleep, and awake no
more, saith the Lord.

51:40. I will bring them down like lambs to the slaughter, and like
rams with kids.

51:41. How is Sesach taken, and the renowned one of all the earth
surprised?  How is Babylon become an astonishment among the nations?

51:42. The sea is come up over Babylon :  she is covered with the
multitude of the waves thereof.

51:43. Her cities are become an astonishment, a land uninhabited and
desolate, a land wherein none can dwell, nor son of man pass through
it.

51:44. And I will visit against Bel in Babylon, and I will bring forth
out of his mouth that which he had swallowed down:  and the nations
shall no more flow together to him, for the wall also of Babylon shall
fall.

51:45. Go out of the midst of her, my people:  that every man may save
his life from the fierce wrath of the Lord.

51:46. And lest your hearts faint, and ye fear for the rumour that
shall be heard in the land:  and a rumour shall come in one year, and
after this year another rumour:  and iniquity in the land, and ruler
upon ruler.

51:47. Therefore behold the days come, and I will visit the idols of
Babylon:  and her whole land shall be confounded, and all her slain
shall fall in the midst of her.

51:48. And the heavens and the earth, and all things that are in them
shall give praise for Babylon:  for spoilers shall come to her from the
north, saith the Lord.

51:49. And as Babylon caused that there should fall slain in Israel:  so
of Babylon there shall fall slain in all the earth.

51:50. You that have escaped the sword, come away, stand not still:
remember the Lord afar off, and let Jerusalem come into your mind.

51:51. We are confounded, because we have heard reproach:  shame hath
covered our faces:  because strangers are come upon the sanctuaries of
the house of the Lord.

51:52. Therefore behold the days come, saith the Lord, and I will visit
her graven things, and in all her land the wounded shall groan:

51:53. If Babylon should mount up to heaven, and establish her strength
on high:  from me there should come spoilers upon her, saith the Lord.

51:54. The noise of a cry from Babylon, and great destruction from the
land of the Chaldeans:

51:55. Because the Lord hath laid Babylon waste, and destroyed out of
her the great voice:  and their wave shall roar like many waters:  their
voice hath made a noise:

51:56. Because the spoiler is come upon her, that is, upon Babylon, and
her valiant men are taken, and their bow is weakened, because the Lord,
who is a strong revenger, will surely repay.

51:57. And I will make her princes drunk, and her wise men, and her
captains, and her rulers, and her valiant men:  and they shall sleep an
everlasting sleep, and shall awake no more, saith the king whose name
is Lord of hosts.

51:58. Thus saith the Lord of hosts:  That broad wall of Babylon shall
be utterly broken down, and her high gates shall be burnt with fire,
and the labours of the people shall come to nothing, and of the nations
shall go to the fire, and shall perish.

51:59. The word that Jeremias the prophet commanded Saraias the son of
Nerias, the son of Maasias, when he went with king Sedecias to Babylon,
in the fourth year of his reign:  now Saraias was chief over the
prophecy.

51:60. And Jeremias wrote in one book all the evil that was to come
upon Babylon:  all these words that are written against Babylon.

51:61. And Jeremias said to Saraias:  When thou shalt come into Babylon,
and shalt see, and shalt read all these words,

51:62. Thou shalt say:  O Lord, thou hast spoken against this place to
destroy it:  so that there should be neither man nor beast to dwell
therein, and that it should be desolate for ever.

51:63. And when thou shalt have made an end of reading this book, thou
shalt tie a stone to it, and shalt throw it into the midst of the
Euphrates:

51:64. And thou shalt say:  Thus shall Babylon sink, and she shall not
rise up from the affliction that I will bring upon her, and she shall
be utterly destroyed.  Thus far are the words of Jeremias.



Jeremias Chapter 52


A recapitulation of the reign of Sedecias, and the destruction of
Jerusalem.  The number of the captives.

52:1. Sedecias was one and twenty years old when he began to reign:  and
he reigned eleven years in Jerusalem:  and the name of his mother was
Amital, the daughter of Jeremias of Lobna.

52:2. And he did that which was evil in the eyes of the Lord, according
to all that Joakim had done.

52:3. For the wrath of the Lord was against Jerusalem, and against
Juda, till he cast them out from his presence:  and Sedecias revolted
from the king of Babylon.

52:4. And it came to pass in the ninth year of his reign, in the tenth
month, the tenth day of the month, that Nabuchodonosor the king of
Babylon came, he and all his army, against Jerusalem, and they besieged
it, and built forts against it round about.

52:5. And the city was besieged until the eleventh year of king
Sedecias.

52:6. And in the fourth month, the ninth day of the month, a famine
overpowered the city:  and there was no food for the people of the land.

52:7. And the city was broken up, and the men of war fled, and went out
of the city in the night by the way of the gate that is between the two
walls, and leadeth to the king's garden, (the Chaldeans besieging the
city round about,) and they went by the way that leadeth to the
wilderness.

52:8. But the army of the Chaldeans pursued after the king:  and they
overtook Sedecias in the desert which is near Jericho:  and all his
companions were scattered from him.

52:9. And when they had taken the king, they carried him to the king of
Babylon to Reblatha, which is in the land of Emath:  and he gave
judgment upon him.

52:10. And the king of Babylon slew the sons of Sedecias before his
eyes:  and he slew all the princes of Juda in Reblatha.

52:11. And he put out the eyes of Sedecias, and bound him with fetters,
and the king of Babylon brought him into Babylon, and he put him in
prison till the day of his death.

52:12. And in the fifth month, the tenth day of the month, the same is
the nineteenth year of Nabuchodonosor, king of Babylon, came Nabuzardan
the general of the army, who stood before the king of Babylon in
Jerusalem.

52:13. And he burnt the house of the Lord, and the king's house, and
all the houses of Jerusalem, and every great house he burnt with fire.

52:14. And all the army of the Chaldeans that were with the general
broke down all the wall of Jerusalem round about.

52:15. But Nabuzardan the general carried away captives some of the
poor people, and of the rest of the common sort who remained in the
city, and of the fugitives that were fled over to the king of Babylon,
and the rest of the multitude.

52:16. But of the poor of the land, Nabuzardan the general left some
for vinedressers, and for husbandmen.

52:17. The Chaldeans also broke in pieces the brazen pillars that were
in the house of the Lord, and the bases, and the sea of brass that was
in the house of the Lord:  and they carried all the brass of them to
Babylon.

52:18. And they took the caldrons, and the fleshhooks, and the
psalteries, and the bowls, and the little mortars, and all the brazen
vessels that had been used in the ministry:  and

52:19. The general took away the pitchers, and the censers, and the
pots, and the basins, and the candlesticks, and the mortars, and the
cups:  as many as were of gold, in gold:  and as many as were of silver,
in silver:

52:20. And the two pillars, and one sea, and twelve oxen of brass that
were under the bases, which king Solomon had made in the house of the
Lord:  there was no weight of the brass of all these vessels.

52:21. And concerning the pillars, one pillar was eighteen cubits high:
and a cord of twelve cubits compassed it about:  but the thickness
thereof was four fingers, and it was hollow within.

52:22. And chapiters of brass were upon both:  and the height of one
chapiter was five cubits:  and network, and pomegranates were upon the
chapiters round about, all of brass.  The same of the second pillar, and
the pomegranates.

52:23. And there were ninety-six pomegranates hanging down:  and the
pomegranates being a hundred in all, were compassed with network.

52:24. And the general took Saraias the chief priest, and Sophonias the
second priest, and the three keepers of the entry.

52:25. He also took out of the city one eunuch that was chief over the
men of war:  and seven men of them that were near the king's person,
that were found in the city:  and a scribe, an officer of the army who
exercised the young soldiers:  and threescore men of the people of the
land, that were found in the midst of the city.

52:26. And Nabuzardan the general took them, and brought them to the
king of Babylon, to Reblatha.

52:27. And the king of Babylon struck them, and put them to death in
Reblatha, in the land of Emath:  and Juda was carried away captive out
of his land.

52:28. This is the people whom Nabuchodonosor carried away captive:  in
the seventh year, three thousand and twenty-three Jews.

52:29. In the eighteenth year of Nabuchodonosor, eight hundred and
thirty-two souls from Jerusalem.

52:30. In the three and twentieth year of Nabuchodonosor, Nabuzardan
the general carried away of the Jews seven hundred and forty-five
souls.  So all the souls were four thousand six hundred.

52:31. And it came to pass in the seven and thirtieth year of the
captivity of Joachin king of Juda, in the twelfth month, the five and
twentieth day of the month, that Evilmerodach king of Babylon, in the
first year of his reign, lifted up the head of Joachin king of Juda,
and brought him forth out of prison.

52:32. And he spoke kindly to him, and he set his throne above the
thrones of the kings that were with him in Babylon.

52:33. And he changed his prison garments, and he ate bread before him
always all the days of his life.

52:34. And for his diet a continual provision was allowed him by the
king of Babylon, every day a portion, until the day of his death, all
the days of his life.




THE LAMENTATIONS OF JEREMIAS



In these JEREMIAS laments in a most pathetical manner the miseries of
his people, and the destruction of JERUSALEM and the temple, in Hebrew
verses, beginning with different letters according to the order of the
Hebrew alphabet.



Lamentations Chapter 1


PREFACE:  And it came to pass, after Israel was carried into captivity,
and Jerusalem was desolate, that Jeremias the prophet sat weeping, and
mourned with this lamentation over Jerusalem, and with a sorrowful
mind, sighing and moaning, he said:

And it came to pass, etc. . .This preface was not written by Jeremias,
but was added by the seventy interpreters, to give the reader to
understand upon what occasion the Lamentations were published.

1:1. Aleph.  How doth the city sit solitary that was full of people! how
is the mistress of the Gentiles become as a widow:  the princes of
provinces made tributary!

1:2. Beth.  Weeping, she hath wept in the night, and her tears are on
her cheeks:  there is none to comfort her among all them that were dear
to her:  all her friends have despised her, and are become her enemies.

1:3. Ghimel.  Juda hath removed her dwelling place, because of her
affliction, and the greatness of her bondage; she hath dwelt among the
nations, and she hath found no rest; all her persecutors have taken her
in the midst of straits.

1:4. Daleth.  The ways of Sion mourn, because there are none that come
to the solemn feast:  all her gates are broken down; her priests sigh;
her virgins are in affliction; and she is oppressed with bitterness.

1:5. He.  Her adversaries are become her lords; her enemies are
enriched; because the Lord hath spoken against her for the multitude of
her iniquities; her children are led into captivity, before the face of
the oppressor.

1:6. Vau.  And from the daughter of Sion, all her beauty is departed;
her princes are become like rams that find no pastures; and they are
gone away without strength before the face of the pursuer.

1:7. Zain.  Jerusalem hath remembered the days of her affliction, and
prevarication of all her desirable things which she had from the days
of old, when her people fell in the enemy's hand, and there was no
helper; the enemies have seen her, and have mocked at her sabbaths.

1:8. Heth.  Jerusalem hath grievously sinned, therefore is she become
unstable; all that honoured her, have despised her, because they have
seen her shame; but she sighed, and turned backward.

1:9. Teth.  Her filthiness is on her feet, and she hath not remembered
her end; she is wonderfully cast down, not having a comforter:  behold,
O Lord, my affliction, because the enemy is lifted up.

1:10. Jod.  The enemy hath put out his hand to all her desirable things:
for she hath seen the Gentiles enter into her sanctuary, of whom thou
gavest commandment that they should not enter into thy church.

1:11. Caph.  All her people sigh, they seek bread:  they have given all
their precious things for food to relieve the soul:  see, O Lord, and
consider, for I am become vile.

1:12. Lamed.  O all ye that pass by the way, attend, and see if there be
any sorrow like to my sorrow:  for he hath made a vintage of me, as the
Lord spoke in the day of his fierce anger.

1:13. Mem.  From above he hath sent fire into my bones, and hath
chastised me:  he hath spread a net for my feet, he hath turned me back:
he hath made me desolate, wasted with sorrow all the day long.

1:14. Nun.  The yoke of my iniquities hath watched:  they are folded
together in his hand, and put upon my neck:  my strength is weakened:
the Lord hath delivered me into a hand, out of which I am not able to
rise.

1:15. Samech.  The Lord hath taken away all my mighty men out of the
midst of me:  he hath called against me the time, to destroy my chosen
men:  the Lord hath trodden the winepress for the virgin daughter of
Juda.

1:16. Ain.  Therefore do I weep, and my eyes run down with water:
because the comforter, the relief of my soul, is far from me:  my
children are desolate because the enemy hath prevailed.

1:17. Phe.  Sion hath spread forth her hands, there is none to comfort
her:  the Lord hath commanded against Jacob, his enemies are round about
him:  Jerusalem is as a menstruous woman among them.

1:18. Sade.  The Lord is just, for I have provoked his mouth to wrath:
hear, I pray you, all ye people, and see my sorrow:  my virgins, and my
young men are gone into captivity.

1:19. Coph.  I called for my friends, but they deceived me:  my priests
and my ancients pined away in the city:  while they sought their food,
to relieve their souls.

1:20. Res.  Behold, O Lord, for I am in distress, my bowels are
troubled:  my heart is turned within me, for I am full of bitterness:
abroad the sword destroyeth and at home there is death alike.

1:21. Sin.  They have heard that I sigh, and there is none to comfort
me:  all my enemies have heard of my evil, they have rejoiced that thou
hast done it:  thou hast brought a day of consolation, and they shall be
like unto me.

1:22. Thau.  Let all their evil be present before thee:  and make vintage
of them, as thou hast made vintage of me for all my iniquities:  for my
sighs are many, and my heart is sorrowful.



Lamentations Chapter 2


2:1. Aleph.  How hath the Lord covered with obscurity the daughter of
Sion in his wrath! how hath he cast down from heaven to the earth the
glorious one of Israel, and hath not remembered his footstool in the
day of his anger.

2:2. Beth.  The Lord hath cast down headlong, and hath not spared, all
that was beautiful in Jacob:  he hath destroyed in his wrath the strong
holds of the virgin of Juda, and brought them down to the ground:  he
hath made the kingdom unclean, and the princes thereof.

2:3. Ghimel.  He hath broken in his fierce anger all the horn of Israel:
he hath drawn back his right hand from before the enemy:  and he hath
kindled in Jacob as it were a flaming fire devouring round about.

2:4. Daleth.  He hath bent his bow as an enemy, he hath fixed his right
hand as an adversary:  and he hath killed all that was fair to behold in
the tabernacle of the daughter of Sion, he hath poured out his
indignation like fire.

2:5. He.  The Lord is become as an enemy:  he hath cast down Israel
headlong, he hath overthrown all the walls thereof:  he hath destroyed
his strong holds, and hath multiplied in the daughter of Juda the
afflicted, both men and women.

2:6. Vau.  And he hath destroyed his tent as a garden, he hath thrown
down his tabernacle:  the Lord hath caused feasts and sabbaths to be
forgotten in Sion:  and hath delivered up king and priest to reproach,
and to the indignation of his wrath.

2:7. Zain.  The Lord hath cast off his altar, he hath cursed his
sanctuary:  he hath delivered the walls of the towers thereof into the
hand of the enemy:  they have made a noise in the house of the Lord, as
in the day of a solemn feast.

He hath cursed his sanctuary. . .That is, he permitted his sanctuary to
be destroyed, as if it had not been consecrated, but execrable.

2:8. Heth.  The Lord hath purposed to destroy the wall of the daughter
of Sion:  he hath stretched out his line, and hath not withdrawn his
hand from destroying:  and the bulwark hath mourned, and the wall hath
been destroyed together.

2:9. Teth.  Her gates are sunk into the ground:  he hath destroyed, and
broken her bars:  her king and her princes are among the Gentiles:  the
law is no more, and her prophets have found no vision from the Lord.

2:10. Jod.  The ancients of the daughter of Sion sit upon the ground,
they have held their peace:  they have sprinkled their heads with dust,
they are girded with haircloth, the virgins of Jerusalem hang down
their heads to the ground.

2:11. Caph.  My eyes have failed with weeping, my bowels are troubled:
my liver is poured out upon the earth, for the destruction of the
daughter of my people, when the children, and the sucklings, fainted
away in the streets of the city.

2:12. Lamed.  They said to their mothers:  Where is corn and wine?  when
they fainted away as the wounded in the streets of the city:  when they
breathed out their souls in the bosoms of their mothers.

2:13. Mem.  To what shall I compare thee?  or to what shall I liken thee,
O daughter of Jerusalem?  to what shall I equal thee, that I may comfort
thee, O virgin daughter of Sion?  for great as the sea is thy
destruction:  who shall heal thee?

2:14. Nun.  Thy prophets have seen false and foolish things for thee:
and they have not laid open thy iniquity, to excite thee to penance:
but they have seen for thee false revelations and banishments.

2:15. Samech.  All they that passed by the way have clapped their hands
at thee:  they have hissed, and wagged their heads at the daughter of
Jerusalem, saying:  Is this the city of perfect beauty, the joy of all
the earth?

2:16. Phe.  All thy enemies have opened their month against thee:  they
have hissed, and gnashed with the teeth, and have said:  We will swallow
her up:  lo, this is the day which we looked for:  we have found it, we
have seen it.

2:17. Ain.  The Lord hath done that which he purposed, he hath fulfilled
his word, which he commanded in the days of old:  he hath destroyed, and
hath not spared, and he hath caused the enemy to rejoice over thee, and
hath set up the horn of thy adversaries.

2:18. Sade.  Their heart cried to the Lord upon the walls of the
daughter of Sion:  Let tears run down like a torrent day and night:  give
thyself no rest, and let not the apple of thy eye cease.

2:19. Coph.  Arise, give praise in the night, in the beginning of the
watches:  pour out thy heart like water, before the face of the Lord:
lift up thy hands to him for the life of thy little children, that have
fainted for hunger at the top of all the streets.

2:20. Res.  Behold, O Lord, and consider whom thou hast thus dealt with:
shall women then eat their own fruit, their children of a span long?
shall the priest and the prophet be slain in the sanctuary of the Lord?

2:21. Sin.  The child and the old man lie without on the ground:  my
virgins and my young men are fallen by the sword:  thou hast slain them
in the day of thy wrath:  thou hast killed, and shewn them no pity.

2:22. Thau.  Thou hast called as to a festival, those that should
terrify me round about, and there was none in the day of the wrath of
the Lord that escaped and was left:  those that I brought up, and
nourished, my enemy hath consumed them.



Lamentations Chapter 3


3:1. Aleph.  I am the man that see my poverty by the rod of his
indignation.

3:2. Aleph.  He hath led me, and brought me into darkness, and not into
light.

3:3. Aleph.  Only against me he hath turned, and turned again his hand
all the day.

3:4. Beth.  My skin and my flesh he hath made old, he hath broken my
bones.

3:5. Beth.  He hath built round about me, and he hath compassed me with
gall, and labour.

3:6. Beth.  He hath set me in dark places as those that are dead for
ever.

3:7. Ghimel.  He hath built against me round about, that I may not get
out:  he hath made my fetters heavy.

3:8. Ghimel.  Yea, and when I cry, and entreat, he hath shut out my
prayer.

3:9. Ghimel.  He hath shut up my ways with square stones, he hath turned
my paths upside down.

3:10. Daleth.  He is become to me as a bear lying in wait:  as a lion in
secret places.

3:11. Daleth.  He hath turned aside my paths, and hath broken me in
pieces, he hath made me desolate.

3:12. Daleth.  He hath bent his bow, and set me as a mark for his
arrows.

3:13. He.  He hath shot into my reins the daughters of his quiver.

3:14. He.  I am made a derision to all my people, their song all the day
long.

3:15. He.  He hath filled me with bitterness, he hath inebriated me with
wormwood.

3:16. Vau.  And he hath broken my teeth one by one, he hath fed me with
ashes.

3:17. Vau.  And my soul is removed far off from peace, I have forgotten
good things.

3:18. Vau.  And I said:  My end and my hope is perished from the Lord.

3:19. Zain.  Remember my poverty, and transgression, the wormwood and
the gall.

3:20. Zain.  I will be mindful and remember, and my soul shall languish
within me.

3:21. Zain.  These things I shall think over in my heart, therefore will
I hope.

3:22. Heth.  The mercies of the Lord that we are not consumed:  because
his commiserations have not failed.

3:23. Heth.  They are new every morning, great is thy faithfulness.

3:24. Heth.  The Lord is my portion, said my soul:  therefore will I wait
for him.

3:25. Teth.  The Lord is good to them that hope in him, to the soul that
seeketh him.

3:26. Teth.  It is good to wait with silence for the salvation of God.

3:27. Teth.  It is good for a man, when he hath borne the yoke from his
youth.

3:28. Jod.  He shall sit solitary, and hold his peace:  because he hath
taken it up upon himself.

3:29. Jod.  He shall put his mouth in the dust, if so be there may be
hope.

3:30. Jod.  He shall give his cheek to him that striketh him, he shall
be filled with reproaches.

3:31. Caph.  For the Lord will not cast off for ever.

3:32. Caph.  For if he hath cast off, he will also have mercy, according
to the multitude of his mercies.

3:33. Caph.  For he hath not willingly afflicted, nor cast off the
children of men.

3:34. Lamed.  To crush under his feet all the prisoners of the land,

3:35. Lamed.  To turn aside the judgment of a man before the face of the
most High,

3:36. Lamed.  To destroy a man wrongfully in his judgment, the Lord hath
not approved.

3:37. Mem.  Who is he that hath commanded a thing to be done, when the
Lord commandeth it not?

3:38. Mem.  Shall not both evil and good proceed out of the mouth of the
Highest?

3:39. Mem.  Why hath a living man murmured, man suffering for his sins?

3:40. Nun.  Let us search our ways, and seek, and return to the Lord.

3:41. Nun.  Let us lift up our hearts with our hands to the Lord in the
heavens.

3:42. Nun.  We have done wickedly, and provoked thee to wrath:  therefore
thou art inexorable.

3:43. Samech.  Thou hast covered in thy wrath, and hast struck us:  thou
hast killed and hast not spared.

3:44. Samech.  Thou hast set a cloud before thee, that our prayer may
not pass through.

3:45. Samech.  Thou hast made me as an outcast, and refuse in the midst
of the people.

3:46. Phe.  All our enemies have opened their mouths against us.

3:47. Phe.  Prophecy is become to us a fear, and a snare, and
destruction.

3:48. Phe.  My eye hath run down with streams of water, for the
destruction of the daughter of my people.

3:49. Ain.  My eye is afflicted, and hath not been quiet, because there
was no rest:

3:50. Ain.  Till the Lord regarded and looked down from the heavens.

3:51. Ain.  My eye hath wasted my soul because of all the daughters of
my city.

3:52. Sade.  My enemies have chased me and caught me like a bird,
without cause.

3:53. Sade.  My life is fallen into the pit, and they have laid a stone
over me.

3:54. Sade.  Waters have flowed over my head:  I said:  I am cut off.

3:55. Coph.  I have called upon thy name, O Lord, from the lowest pit.

3:56. Coph.  Thou hast heard my voice:  turn not away thy ear from my
sighs, and cries.

3:57. Coph.  Thou drewest near in the day, when I called upon thee, thou
saidst:  Fear not.

3:58. Res.  Thou hast judged, O Lord, the cause of my soul, thou the
Redeemer of my life.

3:59. Res.  Thou hast seen, O Lord, their iniquity against me:  judge
thou my judgment.

3:60. Res.  Thou hast seen all their fury, and all their thoughts
against me.

3:61. Sin.  Thou hast heard their reproach, O Lord, all their
imaginations against me.

3:62. Sin.  The lips of them that rise up against me:  and their devices
against me all the day.

3:63. Sin.  Behold their sitting down, and their rising up, I am their
song.

3:64. Thau.  Thou shalt render them a recompense, O Lord, according to
the works of their hands.

3:65. Thau.  Thou shalt give them a buckler of heart, thy labour.

3:66. Thau.  Thou shalt persecute them in anger, and shalt destroy them
from under the heavens, O Lord.



Lamentations Chapter 4


4:1. Aleph.  How is the gold become dim, the finest colour is changed,
the stones of the sanctuary are scattered in the top of every street?

4:2. Beth.  The noble sons of Sion, and they that were clothed with the
best gold:  how are they esteemed as earthen vessels, the work of the
potter's hands?

4:3. Ghimel.  Even the sea monsters have drawn out the breast, they have
given suck to their young:  the daughter of my people is cruel, like the
ostrich in the desert.

4:4. Daleth.  The tongue of the sucking child hath stuck to the roof of
his mouth for thirst:  the little ones have asked for bread, and there
was none to break it unto them.

4:5. He.  They that were fed delicately have died in the streets:  they
that were brought up in scarlet have embraced the dung.

4:6. Vau.  And the iniquity of the daughter of my people is made greater
than the sin of Sodom, which was overthrown in a moment, and hands took
nothing in her.

4:7. Zain.  Her Nazarites were whiter than snow, purer than milk, more
ruddy than the old ivory, fairer than the sapphire.

4:8. Heth.  Their face is now made blacker than coals, and they are not
known in the streets:  their skin hath stuck to their bones, it is
withered, and is become like wood.

4:9. Teth.  It was better with them that were slain by the sword, than
with them that died with hunger:  for these pined away being consumed
for want of the fruits of the earth.

4:10. Jod.  The hands of the pitiful women have sodden their own
children:  they were their meat in the destruction of the daughter of my
people.

4:11. Caph.  The Lord hath accomplished his wrath, he hath poured out
his fierce anger:  and he hath kindled a fire in Sion, and it hath
devoured the foundations thereof.

4:12. Lamed.  The kings of the earth, and all the inhabitants of the
world would not have believed, that the adversary and the enemy should
enter in by the gates of Jerusalem.

4:13. Mem.  For the sins of her prophets, and the iniquities of her
priests, that have shed the blood of the just in the midst of her.

4:14. Nun.  They have wandered as blind men in the streets, they were
defiled with blood:  and when they could not help walking in it, they
held up their skirts.

4:15. Samech.  Depart you that are defiled, they cried out to them:
Depart, get ye hence, touch not:  for they quarrelled, and being
removed, they said among the Gentiles:  He will no more dwell among
them.

4:16. Phe.  The face of the Lord hath divided them, he will no more
regard them:  they respected not the persons of the priests, neither had
they pity on the ancient.

4:17. Ain.  While we were yet standing, our eyes failed, expecting help
for us in vain, when we looked attentively towards a nation that was
not able to save.

4:18. Sade.  Our steps have slipped in the way of our streets, our end
draweth near:  our days are fulfilled, for our end is come.

4:19. Coph.  Our persecutors were swifter than the eagles of the air:
they pursued us upon the mountains, they lay in wait for us in the
wilderness.

4:20. Res.  The breath of our mouth, Christ the Lord, is taken in our
sins:  to whom we said:  Under thy shadow we shall live among the
Gentiles.

Christ, etc. . .This, according to the letter, is spoken of their king,
who is called the Christ, that is, the Anointed of the Lord.  But it
also relates, in the spiritual sense, to Christ our Lord, suffering for
our sins.

4:21. Sin.  Rejoice, and be glad, O daughter of Edom, that dwellest in
the land of Hus:  to thee also shall the cup come, thou shalt be made
drunk, and naked.

4:22. Thau.  Thy iniquity is accomplished, O daughter of Sion, he will
no more carry thee away into captivity:  he hath visited thy iniquity, O
daughter of Edom, he hath discovered thy sins.

THE PRAYER OF JEREMIAS THE PROPHET



Lamentations Chapter 5


5:1. Remember, O Lord, what is come upon us:  consider and behold our
reproach.

5:2. Our inheritance is turned to aliens:  our houses to strangers.

5:3. We are become orphans without a father:  our mothers are as widows.

5:4. We have drunk our water for money:  we have bought our wood.

5:6. We were dragged by the necks, we were weary and no rest was given
us.

5:6. We have given our hand to Egypt, and to the Assyrians, that we
might be satisfied with bread.

5:7. Our fathers have sinned, and are not:  and we have borne their
iniquities.

5:8. Servants have ruled over us:  there was none to redeem us out of
their hand.

5:9. We fetched our bread at the peril of our lives, because of the
sword in the desert.

5:10. Our skin was burnt as an oven, by reason of the violence of the
famine.

5:11. They oppressed the women in Sion, and the virgins in the cities
of Juda.

5:12. The princes were hanged up by their hand:  they did not respect
the persons of the ancients.

5:13. They abused the young men indecently:  and the children fell under
the wood.

5:14. The ancients have ceased from the gates:  the young men from the
choir of the singers.

5:15. The joy of our heart is ceased, our dancing is turned into
mourning.

5:16. The crown is fallen from our head:  woe to us, because we have
sinned.

5:17. Therefore is our heart sorrowful, therefore are our eyes become
dim.

5:18. For mount Sion, because it is destroyed, foxes have walked upon
it.

5:19. But thou, O Lord, shalt remain for ever, thy throne from
generation to generation.

5:20. Why wilt thou forget us for ever?  why wilt thou forsake us for a
long time?

5:21. Convert us, O Lord, to thee, and we shall be converted:  renew our
days, as from the beginning.

5:22. But thou hast utterly rejected us, thou art exceedingly angry
with us.




THE PROPHECY OF BARUCH



BARUCH was a man of noble extraction, and learned in the law, secretary
and disciple to the prophet JEREMIAS, and a sharer in his labours and
persecutions:  which is the reason why the ancient fathers have
considered this book as a part of the prophecy of JEREMIAS, and have
usually quoted it under his name.



Baruch Chapter 1


The Jews of Babylon send the book of Baruch with money to Jerusalem,
requesting their brethren there to offer sacrifice, and to pray for the
king and for them, acknowledging their manifold sins.

1:1. And these are the words of the book, which Baruch the son of
Nerias, the son of Maasias, the son of Sedecias, the son of Sedei, the
son Helcias, wrote in Babylonia.

1:2. In the fifth year, in the seventh day of the month, at the time
that the Chaldeans took Jerusalem, and burnt it with fire.

1:3. And Baruch read the words of this book in the hearing of Jechonias
the son of Joakim king of Juda, and in the hearing of all the people
that came to hear the book.

1:4. And in the hearing of the nobles, the sons of the kings, and in
the hearing of the ancients, and in the hearing of the people, from the
least even to the greatest of them that dwelt in Babylonia, by the
river Sedi.

1:5. And when they heard it they wept, and fasted, and prayed before
the Lord.

1:6. And they made a collection of money according to every man's
power.

1:7. And they sent it to Jerusalem to Joakim the priest, the son of
Helcias, the son of Salom, and to the priests, and to all the people,
that were found with him in Jerusalem:

1:8. At the time when he received the vessels of the temple of the
Lord, which had been taken away out of the temple, to return them into
the land of Juda the tenth day of the month Sivan, the silver vessels,
which Sedecias the son of Josias king of Juda had made,

1:9. After that Nabuchodonosor the king of Babylon had carried away
Jechonias, and the princes, and all the powerful men, and the people of
the land from Jerusalem, and brought them bound to Babylon.

1:10. And they said:  Behold we have sent you money, buy with it
holocausts, and frankincense, and make meat offerings, and offerings
for sin at the altar of the Lord our God:

1:11. And pray ye for the life of Nabuchodonosor the king of Babylon,
and for the life of Balthasar his son, that their days may be upon
earth as the days of heaven:

1:12. And that the Lord may give us strength, and enlighten our eyes,
that we may live under the shadow of Nabuchodonosor the king of
Babylon, and under the shadow of Balthasar his son, and may serve them
many days, and may find favour in their sight.

1:13. And pray ye for us to the Lord our God:  for we have sinned
against the Lord our God, and his wrath is not turned away from us even
to this day.

1:14. And read ye this book, which we have sent to you to be read in
the temple of the Lord, on feasts, and proper days.

1:15. And you shall say:  To the Lord our God belongeth justice, but to
us confusion of our face:  as it is come to pass at this day to all
Juda, and to the inhabitants of Jerusalem,

1:16. To our kings, and to our princes, and to our priests, and to our
prophets, and to our fathers.

1:17. We have sinned before the Lord our God, and have not believed
him, nor put our trust in him:

1:18. And we were not obedient to him, and we have not hearkened to the
voice of the Lord our God, to walk in his commandments which he hath
given us.

1:19. From the day that he brought our fathers out of the land of
Egypt, even to this day, we were disobedient to the Lord our God:  and
going astray we turned away from hearing his voice.

1:20. And many evils have cleaved to us, and the curses which the Lord
foretold by Moses his servant:  who brought our fathers out of the land
of Egypt, to give us a land flowing with milk and honey, as at this
day.

1:21. And we have not hearkened to the voice of the Lord our God
according to all the words of the prophets whom he sent to us:

1:22. And we have gone away every man after the inclinations of his own
wicked heart, to serve strange gods, and to do evil in the sight of the
Lord our God.



Baruch Chapter 2


A further confession of the sins of the people, and of the justice of
God.

2:1. Wherefore the Lord our God hath made good his word, that he spoke
to us, and to our judges that have judged Israel, and to our kings, and
to our princes, and to all Israel and Juda:

2:2. That the Lord would bring upon us great evils, such as never
happened under heaven, as they have come to pass in Jerusalem,
according to the things that are written in the law of Moses:

2:3. That a man should eat the flesh of his own son, and the flesh of
his own daughter.

2:4. And he hath delivered them up to be under the hand of all the
kings that are round about us, to be a reproach, and desolation among
all the people, among whom the Lord hath scattered us.

2:5. And we are brought under, and are not uppermost:  because we have
sinned against the Lord our God, by not obeying his voice.

2:6. To the Lord our God belongeth justice:  but to us, and to our
fathers confusion of face, as at this day.

2:7. For the Lord hath pronounced against us all these evils that are
come upon us:

2:8. And we have not entreated the face of the Lord our God, that we
might return every one of us from our most wicked ways.

2:9. And the Lord hath watched over us for evil, and hath brought it
upon us:  for the Lord is just in all his works which he hath commanded
us:

2:10. And we have not hearkened to his voice to walk in the
commandments of the Lord which he hath set before us.

2:11. And now, O Lord God of Israel, who hast brought thy people out of
the land of Egypt with a strong hand, and with signs, and with wonders,
and with thy great power, and with a mighty arm, and hast made thee a
name as at this day,

2:12. We have sinned, we have done wickedly, we have acted unjustly, O
Lord our God, against all thy justices.

2:13. Let thy wrath be turned away from us:  for we are left a few among
the nations where thou hast scattered us.

2:14. Hear, O Lord, our prayers, and our petitions, and deliver us for
thy own sake:  and grant that we may find favour in the sight of them
that have led us away:

2:15. That all the earth may know that thou art the Lord our God, and
that thy name is called upon Israel, and upon his posterity.

2:16. Look down upon us, O Lord, from thy holy house, and incline thy
ear, and hear us.

2:17. Open thy eyes, and behold:  for the dead that are in hell, whose
spirit is taken away from their bowels, shall not give glory and
justice to the Lord:

Justice, etc. . .They that are in hell shall not give justice to God;
that is, they shall not acknowledge and glorify his justice as penitent
sinners do upon earth.

2:18. But the soul that is sorrowful for the greatness of evil she hath
done, and goeth bowed down, and feeble, and the eyes that fail, and the
hungry soul giveth glory and justice to thee the Lord.

2:19. For it is not for the justices of our fathers that we pour out
our prayers, and beg mercy in thy sight, O Lord our God:

2:20. But because thou hast sent out thy wrath, and thy indignation
upon us, as thou hast spoken by the hand of thy servants the prophets,
saying:

2:21. Thus saith the Lord:  Bow down your shoulder, and your neck, and
serve the king of Babylon:  and you shall remain in the land which I
have given to your fathers.

2:22. But if you will not hearken to the voice of the Lord your God, to
serve the king of Babylon:  I will cause you to depart out of the cities
of Juda, and from without Jerusalem.

2:23. And I will take away from you the voice of mirth, and the voice
of joy, and the voice of the bridegroom, and the voice of the bride,
and all the land shall be without any footstep of inhabitants.

2:24. And they hearkened not to thy voice, to serve the king of
Babylon:  and thou hast made good thy words, which thou spokest by the
hands of thy servants the prophets, that the bones of our kings, and
the bones of our fathers should be removed out of their place:

2:25. And behold they are cast out to the heat of the sun, and to the
frost of the night:  and they have died in grievous pains, by famine,
and by the sword, and in banishment.

2:26. And thou hast made the temple, in which thy name was called upon,
as it is at this day, for the iniquity of the house of Israel, and the
house of Juda.

2:27. And thou hast dealt with us, O Lord our God, according to all thy
goodness, and according to all that great mercy of thine:

2:28. As thou spokest by the hand of thy servant Moses, in the day when
thou didst command him to write thy law before the children of Israel,

2:29. Saying:  If you will not hear my voice, this great multitude shall
be turned into a very small number among the nations, where I will
scatter them:

2:30. For I know that the people will not hear me, for they are a
people of a stiff neck:  but they shall turn to their heart in the land
of their captivity:

2:31. And they shall know that I am the Lord their God:  and I will give
them a heart, and they shall understand:  and ears, and they shall hear.

2:32. And they shall praise me in the land of their captivity, and
shall be mindful of my name.

2:33. And they shall turn away themselves from their stiff neck, and
from their wicked deeds:  for they shall remember the way of their
fathers, that sinned against me.

2:34. And I will bring them back again into the land which I promised
with an oath to their fathers, Abraham, Isaac, and Jacob, and they
shall be masters thereof:  and I will multiply them, and they shall not
be diminished.

2:35. And I will make with them another covenant that shall be
everlasting, to be their God, and they shall be my people:  and I will
no more remove my people, the children of Israel, out of the land that
I have given them.



Baruch Chapter 3


They pray for mercy, acknowledging that they are justly punished for
forsaking true wisdom.  A prophecy of Christ.

3:1. And now, O Lord Almighty, the God of Israel, the soul in anguish,
and the troubled spirit crieth to thee:

3:2. Hear, O Lord, and have mercy, for thou art a merciful God, and
have pity on us:  for we have sinned before thee.

3:3. For thou remainest for ever, and shall we perish everlastingly?

3:4. O Lord Almighty, the God of Israel, hear now the prayer of the
dead of Israel, and of their children, that have sinned before thee,
and have not hearkened to the voice of the Lord their God, wherefore
evils have cleaved fast to us.

3:5. Remember not the iniquities of our fathers, but think upon thy
hand, and upon thy name at this time:

3:6. For thou art the Lord our God, and we will praise thee, O Lord:

3:7. Because for this end thou hast put thy fear in our hearts, to the
intent that we should call upon thy name, and praise thee in our
captivity, for we are converted from the iniquity of our fathers, who
sinned before thee.

3:8. And behold we are at this day in our captivity, whereby thou hast
scattered us to be a reproach, and a curse, and an offence, according
to all the iniquities of our fathers, who departed from thee, O Lord
our God.

3:9. Hear, O Israel, the commandments of life:  give ear, that thou
mayst learn wisdom.

3:10. How happeneth it, O Israel, that thou art in thy enemies' land?

3:11. Thou art grown old in a strange country, thou art defiled with
the dead:  thou art counted with them that go down into hell.

3:12. Thou hast forsaken the fountain of wisdom:

3:13. For if thou hadst walked in the way of God, thou hadst surely
dwelt in peace for ever.

3:14. Learn where is wisdom, where is strength, where is understanding:
that thou mayst know also where is length of days and life, where is
the light of the eyes, and peace.

3:15. Who hath found out her place?  and who hath gone in to her
treasures?

3:16. Where are the princes of the nations, and they that rule over the
beasts that are upon the earth?

3:17. That take their diversion with the birds of the air.

3:18. That hoard up silver and gold, wherein men trust, and there is no
end of their getting?  who work in silver and are solicitous, and their
works are unsearchable.

3:19. They are cut off, and are gone down to hell, and others are risen
up in their place.

3:20. Young men have seen the light, and dwelt upon the earth:  but the
way of knowledge they have not known,

3:21. Nor have they understood the paths thereof, neither have their
children received it, it is far from their face.

3:22. It hath not been heard of in the land of Chanaan, neither hath it
been seen in Theman.

Theman. . .The capital city of Edom.

3:23. The children of Agar also, that search after the wisdom that is
of the earth, the merchants of Merrha, and of Theman, and the tellers
of fables, and searchers of prudence and understanding:  but the way of
wisdom they have not known, neither have they remembered her paths.

Agar. . .The mother of the Ismaelites.

3:24. O Israel, how great is the house of God, and how vast is the
place of his possession!

3:25. It is great, and hath no end:  it is high and immense.

3:26. There were the giants, those renowned men that were from the
beginning, of great stature, expert in war.

3:27. The Lord chose not them, neither did they find the way of
knowledge:  therefore did they perish.

3:28. And because they had not wisdom, they perished through their
folly.

3:29. Who hath gone up into heaven, and taken her, and brought her down
from the clouds?

3:30. Who hath passed over the sea, and found her, and brought her
preferably to chosen gold?

3:31. There is none that is able to know her ways, nor that can search
out her paths:

3:32. But he that knoweth all things, knoweth her, and hath found her
out with his understanding:  he that prepared the earth for evermore,
and filled it with cattle and fourfooted beasts:

3:33. He that sendeth forth the light, and it goeth:  and hath called
it, and it obeyeth him with trembling.

3:34. And the stars have given light in their watches, and rejoiced:

3:35. They were called, and they said:  Here we are:  and with
cheerfulness they have shined forth to him that made them.

3:36. This is our God, and there shall no other be accounted of in
comparison of him.

3:37. He found out all the way of knowledge, and gave it to Jacob his
servant, and to Israel his beloved.

3:38. Afterwards he was seen upon earth, and conversed with men.

Was seen upon earth, etc. . .viz., by the mystery of the incarnation, by
means of which the son of God came visibly amongst us, and conversed
with men.  The prophets often speak of things to come as if they were
past, to express the certainty of the event of the things foretold.



Baruch Chapter 4


The prophet exhorts to the keeping of the law of wisdom, and encourages
the people to be patient, and to hope for their deliverance.

4:1. This is the book of the commandments of God, and the law, that is
for ever:  all they that keep it, shall come to life:  but they that have
forsaken it, to death.

4:2. Return, O Jacob, and take hold of it, walk in the way by its
brightness, in the presence of the light thereof.

4:3. Give not thy honour to another, nor thy dignity to a strange
nation.

4:4. We are happy, O Israel:  because the things that are pleasing to
God, are made known to us.

4:5. Be of good comfort, O people of God, the memorial of Israel:

4:6. You have been sold to the Gentiles, not for your destruction:  but
because you provoked God to wrath, you are delivered to your
adversaries.

4:7. For you have provoked him who made you, the eternal God, offering
sacrifice to devils, and not to God.

4:8. For you have forgotten God, who brought you up, and you have
grieved Jerusalem that nursed you.

4:9. For she saw the wrath of God coming upon you, and she said:  Give
ear, all you that dwell near Sion, for God hath brought upon me great
mourning:

4:10. For I have seen the captivity of my people, of my sons, and my
daughters, which the Eternal hath brought upon them.

4:11. For I nourished them with joy:  but I sent them away with weeping
and mourning.

4:12. Let no man rejoice over me, a widow, and desolate:  I am forsaken
of many for the sins of my children, because they departed from the law
of God.

4:13. And they have not known his justices, nor walked by the ways of
God's commandments, neither have they entered by the paths of his truth
and justice.

4:14. Let them that dwell about Sion come, and remember the captivity
of my sons and daughters, which the Eternal hath brought upon them.

4:15. For he hath brought a nation upon them from afar, a wicked
nation, and of a strange tongue:

4:16. Who have neither reverenced the ancient, nor pitied children, and
have carried away the beloved of the widow, and have left me all alone
without children.

4:17. But as for me, what help can I give you?

4:18. But he that hath brought the evils upon you, he will deliver you
out of the hands of your enemies.

4:19. Go your way, my children, go your way:  for I am left alone.

4:20. I have put off the robe of peace, and have put upon me the
sackcloth of supplication, and I will cry to the most High in my days.

4:21. Be of good comfort, my children, cry to the Lord, and he will
deliver you out of the hand of the princes your enemies.

4:22. For my hope is in the Eternal that he will save you:  and joy is
come upon me from the Holy One, because of the mercy which shall come
to you from our everlasting Saviour.

4:23. For I sent you forth with mourning and weeping:  but the Lord will
bring you back to me with joy and gladness for ever.

4:24. For as the neighbours of Sion have now seen your captivity from
God:  so shall they also shortly see your salvation from God, which
shall come upon you with great honour, and everlasting glory.

4:25. My children, suffer patiently the wrath that is come upon you:
for thy enemy hath persecuted thee, but thou shalt quickly see his
destruction:  and thou shalt get up upon his neck.

4:26. My delicate ones have walked rough ways, for they were taken away
as a flock made a prey by the enemies.

4:27. Be of good comfort, my children, and cry to the Lord:  for you
shall be remembered by him that hath led you away.

4:28. For as it was your mind to go astray from God; so when you return
again you shall seek him ten times as much.

4:29. For he that hath brought evils upon you, shall bring you
everlasting joy again with your salvation.

4:30. Be of good heart, O Jerusalem:  for he exhorteth thee, that named
thee.

4:31. The wicked that have afflicted thee, shall perish:  and they that
have rejoiced at thy ruin, shall be punished.

4:32. The cities which thy children have served, shall be punished:  and
she that received thy sons.

She that received, etc. . .viz., Babylon.

4:33. For as she rejoiced at thy ruin, and was glad of thy fall:  so
shall she be grieved for her own desolation.

4:34. And the joy of her multitude shall be cut off:  and her gladness
shall be turned to mourning.

4:35. For fire shall come upon her from the Eternal, long to endure,
and she shall be inhabited by devils for a great time.

4:36. Look about thee, O Jerusalem, towards the east, and behold the
joy that cometh to thee from God.

4:37. For behold thy children come, whom thou sentest away scattered,
they come gathered together from the east even to the west, at the word
of the Holy One rejoicing for the honour of God.



Baruch Chapter 5


Jerusalem is invited to rejoice and behold the return of her children
out of their captivity.

5:1. Put off, O Jerusalem, the garment of thy mourning, and affliction:
and put on the beauty, and honour of that everlasting glory which thou
hast from God.

5:2. God will clothe thee with the double garment of justice, and will
set a crown on thy head of everlasting honour.

5:3. For God will shew his brightness in thee, to every one under
heaven.

5:4. For thy name shall be named to thee by God for ever:  the peace of
justice, and honour of piety.

5:5. Arise, O Jerusalem, and stand on high:  and look about towards the
east, and behold thy children gathered together from the rising to the
setting sun, by the word of the Holy One rejoicing in the remembrance
of God.

5:6. For they went out from thee on foot, led by the enemies:  but the
Lord will bring them to thee exalted with honour as children of the
kingdom.

5:7. For God hath appointed to bring down every high mountain, and the
everlasting rocks, and to fill up the valleys to make them even with
the ground:  that Israel may walk diligently to the honour of God.

5:8. Moreover the woods, and every sweetsmelling tree have overshadowed
Israel by the commandment of God.

5:9. For God will bring Israel with joy in the light of his majesty,
with mercy, and justice, that cometh from him.



Baruch Chapter 6


The epistle of Jeremias to the captives, as a preservative against
idolatry.

A copy of the epistle that Jeremias sent to them that were to be led
away captives into Babylon, by the king of Babylon, to declare to them
according to what was commanded him by God.

6:1. For the sins that you have committed before God, you shall be
carried away captives into Babylon by Nabuchodonosor the king of
Babylon.

6:2. And when you are come into Babylon, you shall be there many years,
and for a long time, even to seven generations:  and after that I will
bring you away from thence with peace.

Seven generations. . .That is, seventy years.

6:3. But now, you shall see in Babylon gods of gold, and of silver, and
of stone, and of wood borne upon shoulders, causing fear to the
Gentiles.

6:4. Beware therefore that you imitate not the doings of others, and be
afraid, and the fear of them should seize upon you.

6:5. But when you see the multitude behind, and before, adoring them,
say you in your hearts:  Thou oughtest to be adored, O Lord.

6:6. For my angel is with you:  And I myself will demand an account of
your souls.

6:7. For their tongue that is polished by the craftsman, and themselves
laid over with gold and silver, are false things, and they cannot
speak.

6:8. And as if it were for a maiden that loveth to go gay:  so do they
take gold and make them up.

6:9. Their gods have golden crowns upon their heads:  whereof the
priests secretly convey away from them gold, and silver, and bestow it
on themselves.

6:10. Yea and they give thereof to prostitutes, and they dress out
harlots:  and again when they receive it of the harlots, they adorn
their gods.

6:11. And these gods cannot defend themselves from the rust, and the
moth.

6:12. But when they have covered them with a purple garment, they wipe
their face because of the dust of the house, which is very much among
them.

6:13. This holdeth a sceptre as a man, as a judge of the country, but
cannot put to death one that offendeth him.

6:14. And this hath in his hand a sword, or an axe, but cannot save
himself from war, or from robbers, whereby be it known to you, that
they are not gods.

6:15. Therefore fear them not.  For as a vessel that a man uses when it
is broken becometh useless, even so are their gods:

6:16. When they are placed in the house, their eyes are full of dust by
the feet of them that go in.

6:17. And as the gates are made sure on every side upon one that hath
offended the king, or like a dead man carried to the grave, so do the
priests secure the doors with bars and locks, lest they be stripped by
thieves.

6:18. They light candles to them, and in great number, of which they
cannot see one:  but they are like beams in the house.

6:19. And they say that the creeping things which are of the earth,
gnaw their hearts, while they eat them and their garments, and they
feel it not.

6:20. Their faces are black with the smoke that is made in the house.

6:21. Owls, and swallows, and other birds fly upon their bodies, and
upon their heads, and cats in like manner.

6:22. Whereby you may know that they are no gods.  Therefore fear them
not.

6:23. The gold also which they have, is for shew, but except a man wipe
off the rust, they will not shine:  for neither when they were molten,
did they feel it.

6:24. Men buy them at a high price, whereas there is no breath in them.

6:25. And having not the use of feet they are carried upon shoulders,
declaring to men how vile they are.  Be they confounded also that
worship them.

6:26. Therefore if they fall to the ground, they rise not up again of
themselves, nor if a man set them upright, will they stand by
themselves, but their gifts shall be set before them, as to the dead.

6:27. The things that are sacrificed to them, their priests sell and
abuse:  in like manner also their wives take part of them, but give
nothing of it either to the sick, or to the poor.

6:28. The childbearing and menstruous women touch their sacrifices:
knowing, therefore, by these things that they are not gods, fear them
not.

6:29. For how can they be called gods?  because women set offerings
before the gods of silver, and of gold, and of wood:

6:30. And priests sit in their temples, having their garments rent, and
their heads and beards shaven, and nothing upon their heads.

6:31. And they roar and cry before their gods, as men do at the feast
when one is dead.

6:32. The priests take away their garments, and clothe their wives and
their children.

6:33. And whether it be evil that one doth unto them, or good, they are
not able to recompense it:  neither can they set up a king, nor put him
down:

6:34. In like manner they can neither give riches, nor requite evil.  If
a man make a vow to them, and perform it not:  they cannot require it.

6:35. They cannot deliver a man from death, nor save the weak from the
mighty.

6:36. They cannot restore the blind man to his sight:  nor deliver a man
from distress.

36:7. They shall not pity the widow, nor do good to the fatherless.

6:38. Their gods, of wood, and of stone, and of gold, and of silver,
are like the stones that are hewn out of the mountains:  and they that
worship them shall be confounded.

6:39. How then is it to be supposed, or to be said, that they are gods?

6:40. Even the Chaldeans themselves dishonor them:  who when they here
of one dumb that cannot speak, they present him to Bel, entreating him,
that he may speak.

6:41. As though they could be sensible that have no motion themselves:
and they, when they shall perceive this, will leave them:  for their
gods themselves have no sense.

6:42. The women also, with cords about them, sit in the ways, burning
olive-stones.

6:43. And when any one of them, drawn away by some passenger, lieth
with him, she upbraideth her neighbor, that she was not thought as
worthy as herself, nor her cord broken.

6:44. But all things that are done about them, are false:  how is it
then to be thought, or to be said, that they are gods?

6:45. And they are made by workmen, and by goldsmiths.  They shall be
nothing else but what the priests will have them to be.

6:46. For the artificers themselves that make them, are of no long
continuance.  Can those things then that are made by them, be gods?

6:47. But they have left false things and reproach to them that come
after.

6:48. For when war cometh upon them , or evils:  the priests consult
with themselves, where they may hide themselves with them.

6:49. How then can they be thought to be gods, that can neither deliver
themselves from war, nor save themselves from evils?

6:50. For seeing they are but of wood, and laid over with gold, and
with silver, it shall be known hereafter that they are false things, by
all nations, and kings:  and it shall be manifest that they are no gods,
but the work of men's hands, and that there is no work of God in them.

6:51. Whence, therefore, is it known that they are not gods, but the
work of men's hands, and no work of God is in them?

6:52. They cannot set up a king over the land, nor give rain to men.

6:53. They determine no causes, nor deliver countries from oppression:
because they can do nothing, and are as daws between heaven and earth.

6:54. For when fire shall fall upon the house of these gods of wood,
and of silver, and of gold, their priests indeed will flee away, and be
saved:  but they themselves shall be burnt in the midst like beams.

6:55. And they cannot withstand a king and war.  How then can it be
supposed, or admitted, that they are gods?

6:56. Neither are these gods of wood, and of stone, and laid over with
gold, and with silver, able to deliver themselves from thieves or
robbers:  they that are stronger than them,

They that are stronger than them. . .That is, robbers and thieves are
stronger than these idols, being things without life or motion.

6:57. Shall take from them the gold, and silver, and the raiment
wherewith they are clothed, and shall go their way, neither shall they
help themselves.

6:58. Therefore it is better to be a king that sheweth his power:  or
else a profitable vessel in the house, with which the owner thereof
will be well satisfied:  or a door in the house, to keep things safe
that are therein, than such false gods.

6:59. The sun, and the moon, and the stars being bright, and sent forth
for profitable uses, are obedient.

6:60. In like manner the lightning, when it breaketh forth, is easy to
be seen:  and after the same manner the wind bloweth in every country.

6:61. And the clouds, when God commandeth them to go over the whole
world, do that which is commanded them.

6:62. The fire also being sent from above to consume mountains, and
woods, doth as it is commanded.  But these neither in shew, nor in
power, are alike to any one of them.

6:63. Wherefore it is neither to be thought, nor to be said, that they
are gods:  since they are neither able to judge causes, nor to do any
good to men.

6:64. Knowing, therefore, that they are not gods, fear them not.

6:65. For neither can they curse kings, nor bless them.

6:66. Neither do they shew signs in the heaven to the nations, nor
shine as the sun, nor give light as the moon.

6:67. Beasts are better than they, which can fly under a covert, and
help themselves.

6:68. Therefore there is no manner of appearance that they are gods:  so
fear them not.

6:69. For as a scarecrow in a garden of cucumbers keepeth nothing, so
are their gods of wood, and of silver, and laid over with gold.

6:70. They are no better than a white thorn in a garden, upon which
every bird sitteth.  In like manner also their gods of wood, and laid
over with gold, and with silver, are like to a dead body cast forth in
the dark.

6:71. By the purple also and the scarlet which are motheaten upon them,
you shall know that they are not gods.  And they themselves at last are
consumed, and shall be a reproach in the country.

6:72. Better, therefore, is the just man that hath no idols:  for he
shall be far from reproach.




THE PROPHECY OF EZECHIEL



EZECHIEL, whose name signifies the STRENGTH OF GOD, was of the priestly
race; and of the number of captives that were carried away to Babylon
with king JOACHIN.  He was contemporary with JEREMIAS, and prophesied to
the same effect in Babylon, as JEREMIAS did in Jerusalem; and is said
to have ended his days in like manner, by martyrdom.



Ezechiel Chapter 1


The time of Ezechiel's prophecy:  he sees a glorious vision.

1:1. Now it came to pass in the thirtieth year, in the fourth month, on
the fifth day of the month, when I was in the midst of the captives by
the river Chobar, the heavens were opened, and I saw the visions of
God.

The thirtieth year. . .Either of the age of Ezechiel; or, as others will
have it, from the solemn covenant made in the eighteenth year of the
reign of Josias.  4 Kings 23.

1:2. On the fifth day of the month, the same was the fifth year of the
captivity of king Joachin,

1:3. The word of the Lord came to Ezechiel the priest the son of Buzi
in the land of the Chaldeans, by the river Chobar:  and the hand of the
Lord was there upon him.

1:4. And I saw, and behold a whirlwind came out of the north:  and a
great cloud, and a fire infolding it, and brightness was about it:  and
out of the midst thereof, that is, out of the midst of the fire, as it
were the resemblance of amber:

1:5. And in the midst thereof the likeness of four living creatures:
and this was their appearance:  there was the likeness of a man in them.

Living creatures. . .Cherubims (as appears from Ecclesiasticus 49.10)
represented to the prophet under these mysterious shapes, as supporting
the throne of God, and as it were drawing his chariot.  All this chapter
appeared so obscure, and so full of mysteries to the ancient Hebrews,
that, as we learn from St. Jerome, (Ep. ad Paulin.,) they suffered none
to read it before they were thirty years old.

1:6. Every one had four faces, and every one four wings.

1:7. Their feet were straight feet, and the sole of their foot was like
the sole of a calf's foot, and they sparkled like the appearance of
glowing brass.

1:8. And they had the hands of a man under their wings on their four
sides:  and they had faces, and wings on the four sides,

1:9. And the wings of one were joined to the wings of another.  They
turned not when they went:  but every one went straight forward.

1:10. And as for the likeness of their faces:  there was the face of a
man, and the face of a lion on the right side of all the four:  and the
face of an ox, on the left side of all the four:  and the face of an
eagle over all the four.

1:11. And their faces, and their wings were stretched upward:  two wings
of every one were joined, and two covered their bodies:

1:12. And every one of them went straight forward:  whither the impulse
of the spirit was to go, thither they went:  and they turned not when
they went.

1:13. And as for the likeness of the living creatures, their appearance
was like that of burning coals of fire, and like the appearance of
lamps.  This was the vision running to and fro in the midst of the
living creatures, a bright fire, and lightning going forth from the
fire.

1:14. And the living creatures ran and returned like flashes of
lightning.

1:15. Now as I beheld the living creatures, there appeared upon the
earth by the living creatures one wheel with four faces.

1:16. And the appearance of the wheels, and the work of them was like
the appearance of the sea:  and the four had all one likeness:  and their
appearance and their work was as it were a wheel in the midst of a
wheel.

1:17. When they went, they went by their four parts:  and they turned
not when they went.

When they went, they went by their four parts. . .That is, indifferently
to any of their sides either forward or backward:  to the right or to
the left.

1:18. The wheels had also a size, and a height, and a dreadful
appearance:  and the whole body was full of eyes round about all the
four.

1:19. And, when the living creatures went, the wheels also went
together by them:  and when the living creatures were lifted up from the
earth, the wheels also were lifted up with them.

1:20. Withersoever the spirit went, thither as the spirit went the
wheels also were lifted up withal, and followed it:  for the spirit of
life was in the wheels.

1:21. When those went these went, and when those stood these stood, and
when those were lifted up from the earth, the wheels were lifted up
together, and followed them:  for the spirit of life was in the wheels.

1:22. And over the heads of the living creatures was the likeness of
the firmament, the appearance of crystal terrible to behold, and
stretched out over their heads above.

1:23. And under the firmament were their wings straight, the one toward
the other, every one with two wings covered his body, and the other was
covered in like manner.

1:24. And I heard the noise of their wings, like the noise of many
waters, as it were the voice of the most high God:  when they walked, it
was like the voice of a multitude, like the noise of an army, and when
they stood, their wings were let down.

1:25. For when a voice came from above the firmament, that was over
their heads, they stood, and let down their wings.

1:26. And above the firmament that was over their heads, was the
likeness of a throne, as the appearance of the sapphire stone, and upon
the likeness of the throne, was the likeness of the appearance of a man
above upon it.

1:27. And I saw as it were the resemblance of amber as the appearance
of fire within it round about:  from his loins and upward, and from his
loins downward, I saw as it were the resemblance of fire shining round
about.

1:28. As the appearance of the rainbow when it is in a cloud on a rainy
day:  this was the appearance of the brightness round about.



Ezechiel Chapter 2


The prophet receives his commission.

2:1. This was the vision of the likeness of the glory of the Lord, and
I saw, and I fell upon my face, and I heard the voice of one that
spoke, and he said to me:  Son of man, stand upon thy feet, and I will
speak to thee.

2:2. And the spirit entered into me after that he spoke to me, and he
set me upon my feet:  and I heard him speaking to me,

2:3. And saying:  Son of man, I send thee to the children of Israel, to
a rebellious people, that hath revolted from me, they, and their
fathers, have transgressed my covenant even unto this day.

2:4. And they to whom I send thee are children of a hard face, and of
an obstinate heart:  and thou shalt say to them:  Thus saith the Lord
God:

2:5. If so be they at least will hear, and if so be they will forbear,
for they are a provoking house:  and they shall know that there hath
been a prophet in the midst of them.

2:6. And thou, O son of man, fear not, neither be thou afraid of their
words:  for thou art among unbelievers and destroyers, and thou dwellest
with scorpions.  Fear not their words, neither be thou dismayed at their
looks:  for they are a provoking house.

2:7. And thou shalt speak my words to them, if perhaps they will hear,
and forbear:  for they provoke me to anger.

2:8. But thou, O son of man, hear all that I say to thee:  and do not
thou provoke me, as that house provoketh me:  open thy mouth, and eat
what I give thee.

2:9. And I looked, and behold, a hand was sent to me, wherein was a
book rolled up:  and he spread it before me, and it was written within
and without:  and there were written in it lamentations, and canticles,
and woe.



Ezechiel Chapter 3


The prophet eats the book, and receives further instructions:  the
office of a watchman.

3:1. And he said to me:  Son of man, eat all that thou shalt find:  eat
this book, and go speak to the children of Israel.

Eat this book, and go speak to the children of Israel. . .By this eating
of the book was signified the diligent attention and affection with
which we are to receive, and embrace the word of God; and to let it, as
it were, sink into our interior by devout meditation.

3:2. And I opened my mouth, and he caused me to eat that book:

3:3. And he said to me:  Son of man, thy belly shall eat, and thy bowels
shall be filled with this book, which I give thee, and I did eat it:
and it was sweet as honey in my mouth.

3:4. And he said to me:  Son of man, go to the house of Israel, and thou
shalt speak my words to them.

3:5. For thou art not sent to a people of a profound speech, and of an
unknown tongue, but to the house of Israel:

3:6. Nor to many nations of a strange speech, and of an unknown tongue,
whose words thou canst not understand:  and if thou wert sent to them,
they would hearken to thee.

3:7. But the house of Israel will not hearken to thee:  because they
will not hearken to me:  for all the house of Israel are of a hard
forehead and an obstinate heart.

3:8. Behold I have made thy face stronger than their faces:  and thy
forehead harder than their foreheads.

3:9. I have made thy face like an adamant and like flint:  fear them
not, neither be thou dismayed at their presence:  for they are a
provoking house.

3:10. And he said to me:  Son of man, receive in thy heart, and hear
with thy ears, all the words that I speak to thee:

3:11. And go get thee in to them of the captivity, to the children of
thy people, and thou shalt speak to them, and shalt say to them:  Thus
saith the Lord:  If so be they will hear, and will forbear.

3:12. And the spirit took me up, and I heard behind me the voice of a
great commotion, saying:  Blessed be the glory of the Lord, from his
place.

3:13. The noise of the wings of the living creatures striking one
against another, and the noise of the wheels following the living
creatures, and the noise of a great commotion.

3:14. The spirit also lifted me, and took me up:  and I went away in
bitterness in the indignation of my spirit:  for the hand of the Lord
was with me, strengthening me.

3:15. And I came to them of the captivity, to the heap of new corn, to
them that dwelt by the river Chobar, and I sat where they sat:  and I
remained there seven days mourning in the midst of them.

The heap of new corn. . .It was the name of a place:  in Hebrew, tel
abib.

3:16. And at the end of seven days the word of the Lord came to me,
saying:

3:17. Son of man, I have made thee a watchman to the house of Israel:
and thou shalt hear the word out of my mouth, and shalt tell it them
from me.

3:18. If, when I say to the wicked, Thou shalt surely die:  thou declare
it not to him, nor speak to him, that he may be converted from his
wicked way, and live:  the same wicked man shall die in his iniquity,
but I will require his blood at thy hand.

3:19. But if thou give warning to the wicked, and he be not converted
from his wickedness, and from his evil way:  he indeed shall die in his
iniquity, but thou hast delivered thy soul.

3:20. Moreover if the just man shall turn away from his justice, and
shall commit iniquity:  I will lay a stumblingblock before him, he shall
die, because thou hast not given him warning:  he shall die in his sin,
and his justices which he hath done, shall not be remembered:  but I
will require his blood at thy hand.

3:21. But if thou warn the just man, that the just may not sin, and he
doth not sin:  living he shall live, because thou hast warned him, and
thou hast delivered thy soul.

3:22. And the hand of the Lord was upon me, and he said to me:  Rise and
go forth into the plain, and there I will speak to thee.

3:23. And I rose up, and went forth into the plain:  and behold the
glory of the Lord stood there, like the glory which I saw by the river
Chobar:  and I fell upon my face.

3:24. And the spirit entered into me, and set me upon my feet:  and he
spoke to me, and said to me:  Go in; and shut thyself up in the midst of
thy house.

3:25. And thou, O son of man, behold they shall put bands upon thee,
and they shall bind thee with them:  and thou shalt not go forth from
the midst of them.

3:26. And I will make thy tongue stick fast to the roof of thy mouth,
and thou shalt be dumb, and not as a man that reproveth:  because they
are a provoking house.

3:27. But when I shall speak to thee, I will open thy mouth, and thou
shalt say to them:  Thus saith the Lord God:  He that heareth, let him
hear:  and he that forbeareth, let him forbear:  for they are a provoking
house.



Ezechiel Chapter 4


A prophetic description of the siege of Jerusalem, and the famine that
shall reign there.

4:1. And thou, O son of man, take thee a tile, and lay it before thee:
and draw upon it the plan of the city of Jerusalem.

4:2. And lay siege against it, and build forts, and cast up a mount,
and set a camp against it, and place battering rams round about it.

4:3. And take unto thee an iron pan, and set it for a wall of iron
between thee and the city:  and set thy face resolutely against it, and
it shall be besieged, and thou shalt lay siege against it:  it is a sign
to the house of Israel.

4:4. And thou shalt sleep upon thy left side, and shalt lay the
iniquities of the house of Israel upon it, according to the number of
the days that thou shalt sleep upon it, and thou shalt take upon thee
their iniquity.

4:5. And I have laid upon thee the years of their iniquity, according
to the number of the days three hundred and ninety days:  and thou shalt
bear the iniquity of the house of Israel.

4:6. And when thou hast accomplished this, thou shalt sleep again upon
thy right side, and thou shalt take upon thee the iniquity of the house
of Juda forty days:  a day for a year, yea, a day for a year I have
appointed to thee.

4:7. And thou shalt turn thy face to the siege of Jerusalem and thy arm
shall be stretched out:  and thou shalt prophesy against it.

4:8. Behold I have encompassed thee with bands:  and thou shalt not turn
thyself from one side to the other, till thou hast ended the days of
thy siege.

4:9. And take to thee wheat and barley, and beans, and lentils, and
millet, and fitches, and put them in one vessel, and make thee bread
thereof according to the number of the days that thou shalt lie upon
thy side:  three hundred and ninety days shalt thou eat thereof.

4:10. And thy meat that thou shalt eat, shall be in weight twenty
staters a day:  from time to time thou shalt eat it.

4:11. And thou shalt drink water by measure, the sixth part of a hin:
from time to time thou shalt drink it,

Hin. . .That is, a measure of liquids containing about ten pints.

4:12. And thou shalt eat it as barley bread baked under the ashes:  and
thou shalt cover it, in their sight, with the dung that cometh out of a
man.

4:13. And the Lord said:  So shall the children of Israel eat their
bread all filthy among the nations whither I will cast them out.

4:14. And I said:  Ah, ah, ah, O Lord God, behold my soul hath not been
defiled, and from my infancy even till now, I have not eaten any thing
that died of itself, or was torn by beasts, and no unclean flesh hath
entered into my mouth.

4:15. And he said to me:  Behold I have given thee neat's dung for man's
dung, and thou shalt make thy bread therewith.

4:16. And he said to me:  Son of man:  Behold, I will break in pieces the
staff of bread in Jerusalem:  and they shall eat bread by weight, and
with care:  and they shall drink water by measure, and in distress.

4:17. So that when bread and water fail, every man may fall against his
brother, and they may pine away in their iniquities.



Ezechiel Chapter 5


The judgments of God upon the Jews are foreshewn under the type of the
prophet's hair.

5:1. And thou, son of man, take thee a sharp knife that shaveth the
hair:  and cause it to pass over thy head, and over thy beard:  and take
thee a balance to weigh in, and divide the hair.

5:2. A third part thou shalt burn with fire in the midst of the city,
according to the fulfilling of the days of the siege:  and thou shalt
take a third part, and cut it in pieces with the knife all round about:
and the other third part thou shalt scatter in the wind, and I will
draw out the sword after them.

5:3. And thou shalt take thereof a small number:  and shalt bind them in
the skirt of thy cloak.

5:4. And thou shalt take of them again, and shalt cast them in the
midst of the fire, and shalt burn them with fire:  and out of it shall
come forth a fire into all the house of Israel.

5:5. Thus saith the Lord God:  This is Jerusalem, I have set her in the
midst of the nations, and the countries round about her.

5:6. And she hath despised my judgments, so as to be more wicked than
the Gentiles; and my commandments, more than the countries that are
round about her:  for they have cast off my judgments, and have not
walked in my commandments.

5:7. Therefore thus saith the Lord God:  Because you have surpassed the
Gentiles that are round about you, and have not walked in my
commandments, and have not kept my judgments, and have not done
according to the judgments of the nations that are round about you:

5:8. Therefore thus saith the Lord God:  Behold I come against thee, and
I myself will execute judgments in the midst of thee in the sight of
the Gentiles.

5:9. And I will do in thee that which I have not done:  and the like to
which I will do no more, because of all thy abominations.

5:10. Therefore the fathers shall eat the sons in the midst of thee,
and the sons shall eat their fathers:  and I will execute judgments in
thee, and I will scatter thy whole remnant into every wind.

5:11. Therefore as I live, saith the Lord God:  Because thou hast
violated my sanctuary with all thy offences, and with all thy
abominations:  I will also break thee in pieces, and my eye shall not
spare, and I will not have any pity.

5:12. A third part of thee shall die with the pestilence, and shall be
consumed with famine in the midst of thee:  and a third part of thee
shall fall by the sword round about thee:  and a third part of thee will
I scatter into every wind, and I will draw out a sword after them.

5:13. And I will accomplish my fury, and will cause my indignation to
rest upon them, and I will be comforted:  and they shall know that I the
Lord have spoken it in my zeal, when I shall have accomplished my
indignation in them.

5:14. And I will make thee desolate, and a reproach among the nations
that are round about thee, in the sight of every one that passeth by.

5:15. And thou shalt be a reproach, and a scoff, an example, and an
astonishment amongst the nations that are round about thee, when I
shall have executed judgments in thee in anger, and in indignation, and
in wrathful rebukes.

5:16. I the Lord have spoken it:  When I shall send upon them the
grievous arrows of famine, which shall bring death, and which I will
send to destroy you:  and I will gather together famine against you:  and
I will break among you the staff of bread.

5:17. And I will send in upon you famine, and evil beasts unto utter
destruction:  and pestilence, and blood shall pass through thee, and I
will bring in the sword upon thee.  I the Lord have spoken it.



Ezechiel Chapter 6


The punishment of Israel for their idolatry:  a remnant shall be saved.

6:1. And the word of the Lord came to me, saying:

6:2. Son of man set thy face towards the mountains of Israel, and
prophesy against them.

6:3. And say:  Ye mountains of Israel, hear the word of the Lord God:
Thus saith the Lord God to the mountains, and to the hills, and to the
rocks, and the valleys:  Behold, I will bring upon you the sword, and I
will destroy your high places.

6:4. And I will throw down your altars, and your idols shall be broken
in pieces:  and I will cast down your slain before your idols.

6:5. And I will lay the dead carcasses of the children of Israel before
your idols:  and I will scatter your bones round about your altars,

6:6. In all your dwelling places.  The cities shall be laid waste, and
the high places shall be thrown down, and destroyed, and your altars
shall be abolished, and shall be broken in pieces:  and your idols shall
be no more, and your temples shall be destroyed, and your works shall
be defaced.

6:7. And the slain shall fall in the midst of you:  and you shall know
that I am the Lord.

6:8. And I will leave in you some that shall escape the sword among the
nations, when I shall have scattered you through the countries.

6:9. And they that are saved of you shall remember me amongst the
nations, to which they are carried captives:  because I have broken
their heart that was faithless, and revolted from me:  and their eyes
that went a fornicating after their idols:  and they shall be displeased
with themselves because of the evils which they have committed in all
their abominations.

6:10. And they shall know that I the Lord have not spoken in vain that
I would do this evil to them.

6:11. Thus saith the Lord God:  Strike with thy hand and stamp with thy
foot, and say:  Alas, for all the abominations of the evils of the house
of Israel:  for they shall fall by the sword, by the famine, and by the
pestilence.

6:12. He that is far off shall die of the pestilence:  and he that is
near, shall fall by the sword:  and he that remaineth, and is besieged,
shall die by the famine:  and I will accomplish my indignation upon
them.

6:13. And you shall know that I am the Lord, when your slain shall be
amongst your idols, round about your altars, in every high hill, and on
all the tops of mountains, and under every woody tree, and under every
thick oak, the place where they burnt sweet smelling frankincense to
all their idols.

6:14. And I will stretch forth my hand upon them:  and I will make the
land desolate, and abandoned from the desert of Deblatha in all their
dwelling places:  and they shall know that I am the Lord.



Ezechiel Chapter 7


The final desolation of Israel:  from which few shall escape.

7:1. And the word of the Lord came to me, saying:

7:2. And thou son of man, thus saith the Lord God to the land of
Israel:  The end is come, the end is come upon the four quarters of the
land.

7:3. Now is an end come upon thee, and I will send my wrath upon thee,
and I will judge thee according to thy ways:  and I will set all thy
abominations against thee.

7:4. And my eye shall not spare thee, and I will shew thee no pity:  but
I will lay thy ways upon thee, and thy abominations shall be in the
midst of thee:  and you shall know that I am the Lord.

7:5. Thus saith the Lord God:  One affliction, behold an affliction is
come.

7:6. An end is come, the end is come, it hath awaked against thee:
behold it is come.

7:7. Destruction is come upon thee that dwellest in the land:  the time
is come, the day of slaughter is near, and not of the joy of mountains.

7:8. Now very shortly I will pour out my wrath upon thee, and I will
accomplish my anger in thee:  and I will judge thee according to thy
ways, and I will lay upon thee all thy crimes.

7:9. And my eye shall not spare, neither will I shew mercy:  but I will
lay thy ways upon thee, and thy abominations shall be in the midst of
thee:  and you shall know that I am the Lord that strike.

7:10. Behold the day, behold it is come:  destruction is gone forth, the
rod hath blossomed, pride hath budded.

7:11. Iniquity is risen up into a rod of impiety:  nothing of them shall
remain, nor of their people, nor of the noise of them:  and there shall
be no rest among them.

7:12. The time is come, the day is at hand:  let not the buyer rejoice:
nor the seller mourn:  for wrath is upon all the people thereof.

7:13. For the seller shall not return to that which he hath sold,
although their life be yet among the living.  For the vision which
regardeth all the multitude thereof, shall not go back:  neither shall
man be strengthened in the iniquity of his life.

7:14. Blow the trumpet, let all be made ready, yet there is none to go
to the battle:  for my wrath shall be upon all the people thereof.

7:15. The sword without:  and the pestilence, and the famine within:  he
that is in the field shall die by the sword:  and they that are in the
city, shall be devoured by the pestilence, and the famine.

7:16. And such of them as shall flee shall escape:  and they shall be in
the mountains like doves of the valleys, all of them trembling, every
one for his iniquity.

7:17. All hands shall be made feeble, and all knees shall run with
water.

7:18. And they shall gird themselves with haircloth, and fear shall
cover them and shame shall be upon every face, and baldness upon all
their heads.

7:19. Their silver shall be cast forth, and their gold shall become a
dunghill.  Their silver and their gold shall not be able to deliver them
in the day of the wrath of the Lord.  They shall not satisfy their soul,
and their bellies shall not be filled:  because it hath been the
stumblingblock of their iniquity.

7:20. And they have turned the ornament of their jewels into pride, and
have made of it the images of their abominations, and idols:  therefore
I have made it an uncleanness to them.

7:21. And I will give it into the hands of strangers for spoil, and to
the wicked of the earth for a prey, and they shall defile it.

7:22. And I will turn away my face from them, and they shall violate my
secret place:  and robbers shall enter into it, and defile it.

Secret place, etc. . .Viz., the inward sanctuary, the holy of holies.

7:23. Make a shutting up:  for the land is full of the judgment of
blood, and the city is full of iniquity.

Make a shutting up. . .In Hebrew, a chain, viz., for imprisonment and
captivity.

7:24. And I will bring the worst of the nations, and they shall possess
their houses:  and I will make the pride of the mighty to cease, and
they shall possess their sanctuary.

7:25. When distress cometh upon them, they will seek for peace and
there shall be none.

7:26. Trouble shall come upon trouble, and rumour upon rumour, and they
shall seek a vision of the prophet, and the law shall perish from the
priest, and counsel from the ancients.

7:27. The king shall mourn, and the prince shall be clothed with
sorrow, and the hands of the people of the land shall be troubled.  I
will do to them according to their way, and will judge them according
to their judgments:  and they shall know that I am the Lord.



Ezechiel Chapter 8


The prophet sees in a vision the abominations committed in Jerusalem;
which determine the Lord to spare them no longer.

8:1. And it came to pass in the sixth year, in the sixth month, in the
fifth day of the month, as I sat in my house, and the ancients of Juda
sat before me, that the hand of the Lord God fell there upon me.

8:2. And I saw, and behold a likeness as the appearance of fire:  from
the appearance of his loins, and downward, fire:  and from his loins,
and upward, as the appearance of brightness, as the appearance of
amber.

8:3. And the likeness of a hand was put forth and took me by a lock of
my head:  and the spirit lifted me up between the earth and the heaven,
and brought me in the vision of God into Jerusalem, near the inner
gate, that looked toward the north, where was set the idol of jealousy
to provoke to jealousy.

8:4. And behold the glory of the God of Israel was there, according to
the vision which I had seen in the plain.

8:5. And he said to me:  Son of man, lift up thy eyes towards the way of
the north, and I lifted up my eyes towards the way of the north:  and
behold on the north side of the gate of the altar the idol of jealousy
in the very entry.

8:6. And he said to me:  Son of man, dost thou see, thinkest thou, what
these are doing, the great abominations that the house of Israel
committeth here, that I should depart far off from my sanctuary?  and
turn thee yet again and thou shalt see greater abominations.

8:7. And he brought me in to the door of the court:  and I saw, and
behold a hole in the wall.

8:8. And he said to me:  Son of man, dig in the wall, and when I had
digged in the wall, behold a door.

8:9. And he said to me:  Go in, and see the wicked abominations which
they commit here.

8:10. And I went in and saw, and behold every form of creeping things,
and of living creatures, the abominations, and all the idols of the
house of Israel, were painted on the wall all round about.

8:11. And seventy men of the ancients of the house of Israel, and
Jezonias the son of Saaphan stood in the midst of them, that stood
before the pictures:  and every one had a censer in his hand:  and a
cloud of smoke went up from the incense.

8:12. And he said to me:  Surely thou seest, O son of man, what the
ancients of the house of Israel do in the dark, every one in private in
his chamber:  for they say:  The Lord seeth us not, the Lord hath
forsaken the earth.

8:13. And he said to me:  If thou turn thee again, thou shalt see
greater abominations which these commit.

8:14. And he brought me in by the door of the gate of the Lord's house,
which looked to the north:  and behold women sat there mourning for
Adonis.

Adonis. . .The favourite of Venus, slain by a wild boar, as feigned by
the heathen poets, and which being here represented by an idol, is
lamented by the female worshippers of that goddess.  In the Hebrew, the
name is Tammuz.

8:15. And he said to me:  Surely thou hast seen, O son of man:  but turn
thee again, thou shalt see greater abominations than these.

8:16. And he brought me into the inner court of the house of the Lord:
and behold at the door of the temple of the Lord, between the porch and
the altar, were about five and twenty men having their backs towards
the temple of the Lord, in their faces to the east:  and they adored
towards the rising of the sun.

8:17. And he said to me:  Surely thou hast seen, O son of man:  is this a
light thing to the house of Juda, that they should commit these
abominations which they have committed here:  because they have filled
the land with iniquity, and have turned to provoke me to anger?  and
behold they put a branch to their nose.

8:18. Therefore I also will deal with them in my wrath:  my eye shall
not spare them, neither will I shew mercy:  and when they shall cry to
my ears with a loud voice, I will not hear them.



Ezechiel Chapter 9


All are ordered to be destroyed that are not marked in their foreheads.
God will not be entreated for them.

9:1. And he cried in my ears with a loud voice, saying:  The visitations
of the city are at hand, and every one hath a destroying weapon in his
hand.

9:2. And behold six men came from the way of the upper gate, which
looketh to the north:  and each one had his weapon of destruction in his
hand:  and there was one man in the midst of them clothed with linen,
with a writer's inkhorn at his reins:  and they went in, and stood by
the brazen altar.

9:3. And the glory of the Lord of Israel went up from the cherub, upon
which he was, to the threshold of the house:  and he called to the man
that was clothed with linen, and had a writer's inkhorn at his loins.

9:4. And the Lord said to him:  Go through the midst of the city,
through the midst of Jerusalem:  and mark Thau upon the foreheads of the
men that sigh, and mourn for all the abominations that are committed in
the midst thereof.

Mark Thau. . .Thau, or Tau, is the last letter in the Hebrew alphabet,
and signifies a sign, or a mark; which is the reason why some
translators render this place set a mark, or mark a mark without
specifying what this mark was.  But St. Jerome, and other interpreters,
conclude it was the form of the letter Thau, which in the ancient
Hebrew character, was the form of a cross.

9:5. And to the others he said in my hearing:  Go ye after him through
the city, and strike:  let not your eyes spare, nor be ye moved with
pity.

9:6. Utterly destroy old and young, maidens, children and women:  but
upon whomsoever you shall see Thau, kill him not, and begin ye at my
sanctuary.  So they began at the ancient men who were before the house.

9:7. And he said to them:  Defile the house, and fill the courts with
the slain:  go ye forth.  And they went forth, and slew them that were in
the city.

9:8. And the slaughter being ended I was left; and I fell upon my face,
and crying, I said:  Alas, alas, alas, O Lord God, wilt thou then
destroy all the remnant of Israel, by pouring out thy fury upon
Jerusalem?

9:9. And he said to me:  The iniquity of the house of Israel, and of
Juda, is exceeding great, and the land is filled with blood, and the
city is filled with perverseness:  for they have said:  The Lord hath
forsaken the earth, and the Lord seeth not.

9:10. Therefore neither shall my eye spare, nor will I have pity:  I
will requite their way upon their head.

9:11. And behold the man that was clothed with linen, that had the
inkhorn at his back, returned the word, saying:  I have done as thou
hast commanded me.



Ezechiel Chapter 10


Fire is taken from the midst of the wheels under the cherubims, and
scattered over the city.  A description of the cherubims.

10:1. And I saw and behold in the firmament that was over the heads of
the cherubims, there appeared over them as it were the sapphire stone,
as the appearance of the likeness of a throne.

10:2. And he spoke to the man, that was clothed with linen, and said:
Go in between the wheels that are under the cherubims and fill thy hand
with the coals of fire that are between the cherubims, and pour them
out upon the city.  And he went in, in my sight:

10:3. And the cherubims stood on the right side of the house, when the
man went in, and a cloud filled the inner court.

10:4. And the glory of the Lord was lifted up from above the cherub to
the threshold of the house:  and the house was filled with the cloud,
and the court was filled with the brightness of the glory of the Lord.

10:5. And the sound of the wings of the cherubims was heard even to the
outward court as the voice of God Almighty speaking.

10:6. And when he had commanded the man that was clothed with linen,
saying:  Take fire from the midst of the wheels that are between the
cherubims:  he went in and stood beside the wheel.

10:7. And one cherub stretched out his arm from the midst of the
cherubims to the fire that was between the cherubims:  and he took, and
put it into the hands of him that was clothed with linen:  who took it
and went forth.

10:8. And there appeared in the cherubims the likeness of a man's hand
under their wings.

10:9. And I saw, and behold there were four wheels by the cherubims:
one wheel by one cherub, and another wheel by another cherub:  and the
appearance of the wheels was to the sight like the chrysolite stone:

10:10. And as to their appearance, all four were alike:  as if a wheel
were in the midst of a wheel.

10:11. And when they went, they went by four ways:  and they turned not
when they went:  but to the place whither they first turned, the rest
also followed, and did not turn back.

By four ways. . .That is, by any of the four ways, forward, backward, to
the right or to the left.

10:12. And their whole body, and their necks, and their hands, and
their wings, and the circles were full of eyes, round about the four
wheels.

10:13. And these wheels he called voluble, in my hearing.

Voluble. . .That is, rolling wheels, galgal.

10:14. And every one had four faces:  one face was the face of a cherub,
and the second face, the face of a man:  and in the third was the face
of a lion:  and in the fourth the face of an eagle.

10:15. And the cherubims were lifted up:  this is the living creature
that I had seen by the river Chobar.

10:16. And when the cherubims went, the wheels also went by them:  and
when the cherubims lifted up their wings, to mount up from the earth,
the wheels stayed not behind, but were by them.

10:17. When they stood, these stood:  and when they were lifted up,
these were lifted up:  for the spirit of life was in them.

10:18. And the glory of the Lord went forth from the threshold of the
temple:  and stood over the cherubims.

10:19. And the cherubims lifting up their wings, were raised from the
earth before me:  and as they went out, the wheels also followed:  and it
stood in the entry of the east gate of the house of the Lord:  and the
glory of the God of Israel was over them.

10:20. This is the living creature, which I saw under the God of Israel
by the river Chobar:  and I understood that they were cherubims.

10:21. Each one had four faces, and each one had four wings:  and the
likeness of a man's hand was under their wings.

10:22. And as to the likeness of their faces, they were the same faces
which I had seen by the river Chobar, and their looks, and the impulse
of every one to go straight forward.



Ezechiel Chapter 11


A prophecy against the presumptuous assurance of the great ones.  A
remnant shall be saved, and receive a new spirit, and a new heart.

11:1. And the spirit lifted me up, and brought me into the east gate of
the house of the Lord, which looketh towards the rising of the sun:  and
behold in the entry of the gate five and twenty men:  and I saw in the
midst of them Jezonias the son of Azur, and Pheltias the son of
Banaias, princes of the people.

11:2. And he said to me:  Son of man, these are the men that study
iniquity, and frame a wicked counsel in this city,

11:3. Saying:  Were not houses lately built?  This city is the caldron,
and we the flesh.

Were not houses lately built, etc. . .These men despised the predictions
and threats of the prophets; who declared to them from God, that the
city should be destroyed, and the inhabitants carried into captivity:
and they made use of this kind of argument against the prophets, that
the city, so far from being like to be destroyed, had lately been
augmented by the building of new houses; from whence they further
inferred, by way of a proverb, using the similitude of a cauldron, out
of which the flesh is not taken, till it is thoroughly boiled, and fit
to be eaten, that they should not be carried away out of their city,
but there end their days in peace.

11:4. Therefore prophesy against them, prophesy, thou son of man.

11:5. And the spirit of the Lord fell upon me, and said to me:  Speak:
Thus saith the Lord:  Thus have you spoken, O house of Israel, for I
know the thoughts of your heart.

11:6. You have killed a great many in this city, and you have filled
the streets thereof with the slain.

11:7. Therefore thus saith the Lord God:  Your slain, whom you have laid
in the midst thereof, they are the flesh, all this is the caldron:  and
I will bring you forth out of the midst thereof.

11:8. You have feared the sword, and I will bring the sword upon you,
saith the Lord God.

11:9. And I will cast you out of the midst thereof, and I will deliver
you into the hand of the enemies, and I will execute judgments upon
you.

11:10. You shall fall by the sword:  I will judge you in the borders of
Israel, and you shall know that I am the Lord.

In the borders of Israel. . .They pretended that they should die in
peace in Jerusalem; God tells them it should not be so; but that they
should be judged and condemned, and fall by the sword in the borders of
Israel:  viz., in Reblatha in the land of Emath, where all their chief
men were put to death by Nabuchodonosor.  4 Kings 25., and Jer. 52.10,
27.

11:11. This shall not be as a caldron to you, and you shall not be as
flesh in the midst thereof:  I will judge you in the borders of Israel.

11:12. And you shall know that I am the Lord:  because you have not
walked in my commandments, and have not done my judgments, but you have
done according to the judgments of the nations that are round about
you.

11:13. And it came to pass, when I prophesied, that Pheltias the son of
Banaias died:  and I fell down upon my face, and I cried with a loud
voice:  and said:  Alas, alas, alas, O Lord God:  wilt thou make an end
of all the remnant of Israel?

11:14. And the word of the Lord came to me, saying:

11:15. Son of man, thy brethren, thy brethren, thy kinsmen, and all the
house of Israel, all they to whom the inhabitants of Jerusalem have
said:  Get ye far from the Lord, the land is given in possession to us.

Thy brethren, etc. . .He speaks of them that had been carried away
captives before; who were despised by them that remained in Jerusalem:
but as the prophet here declares to them from God, should be in a more
happy condition than they, and after some time return from their
captivity.

11:16. Therefore thus saith the Lord God:  Because I have removed them
far off among the Gentiles, and because I have scattered them among the
countries:  I will be to them a little sanctuary in the countries
whither they are come.

11:17. Therefore speak to them:  Thus saith the Lord God:  I will gather
you from among the peoples, and assemble you out of the countries
wherein you are scattered, and I will give you the land of Israel.

11:18. And they shall go in thither, and shall take away all the
scandals, and all the abominations thereof from thence.

11:19. And I will give them one heart, and will put a new spirit in
their bowels:  and I will take away the stony heart out of their flesh,
and will give them a heart of flesh:

11:20. That they may walk in my commandments, and keep my judgments,
and do them:  and that they may be my people, and I may be their God.

11:21. But as for them whose heart walketh after their scandals and
abominations, I will lay their way upon their head, saith the Lord God.

11:22. And the cherubims lifted up their wings, and the wheels with
them:  and the glory of the God of Israel was over them.

11:23. And the glory of the Lord went up from the midst of the city,
and stood over the mount that is on the east side of the city.

11:24. And the spirit lifted me up, and brought me into Chaldea, to
them of the captivity, in vision, by the spirit of God:  and the vision
which I had seen was taken up from me.

11:25. And I spoke to them of the captivity all the words of the Lord,
which he had shewn me.



Ezechiel Chapter 12


The prophet forsheweth, by signs, the captivity of Sedecias, and the
desolation of the people:  all which shall quickly come to pass.

12:1. And the word of the Lord came to me, saying:

12:2. Son of man, thou dwellest in the midst of a provoking house:  who
have eyes to see, and see not:  and ears to hear, and hear not:  for they
are a provoking house.

12:3. Thou, therefore, O son of man, prepare thee all necessaries for
removing, and remove by day into their sight:  and thou shalt remove out
of thy place to another place in their sight, if so be they will regard
it:  for they are a provoking house.

12:4. And thou shalt bring forth thy furniture as the furniture of one
that is removing by day in their sight:  and thou shalt go forth in the
evening in their presence, as one goeth forth that removeth his
dwelling.

12:5. Dig thee a way through the wall before their eyes:  and thou shalt
go forth through it.

12:6. In their sight thou shalt be carried out upon men's shoulders,
thou shalt be carried out in the dark:  thou shalt cover thy face, and
shalt not see the ground:  for I have set thee for a sign of things to
come to the house of Israel.

12:7. I did therefore as he had commanded me:  I brought forth my goods
by day, as the goods of one that removeth:  and in the evening I digged
through the wall with my hand, and I went forth in the dark, and was
carried on men's shoulders in their sight.

12:8. And the word of the Lord came to me in the morning, saying:

12:9. Son of man, hath not the house of Israel, the provoking house,
said to thee:  What art thou doing?

12:10. Say to them:  Thus saith the Lord God:  This burden concerneth my
prince that is in Jerusalem, and all the house of Israel, that are
among them.

12:11. Say:  I am a sign of things to come to you:  as I have done, so
shall it be done to them:  they shall be removed from their dwellings,
and go into captivity.

12:12. And the prince that is in the midst of them, shall be carried on
shoulders, he shall go forth in the dark:  they shall dig through the
wall to bring him out:  his face shall be covered, that he may not see
the ground with his eyes.

12:13. And I will spread my net over him, and he shall be taken in my
net:  and I will bring him into Babylon, into the land of the Chaldeans,
and he shall not see it, and there he shall die.

He shall not see it. . .Because his eyes shall be put out by
Nabuchodonosor.

12:14. And all that are about him, his guards, and his troops I will
scatter into every wind:  and I will draw out the sword after them.

12:15. And they shall know that I am the Lord, when I shall have
dispersed them among the nations, and scattered them in the countries.

12:16. And I will leave a few men of them from the sword, and from the
famine, and from the pestilence:  that they may declare all their wicked
deeds among the nations whither they shall go:  and they shall know that
I am the Lord.

12:17. And the word of the Lord came to me, saying:

12:18. Son of man, eat thy bread in trouble and drink thy water in
hurry and sorrow.

12:19. And say to the people of the land:  Thus saith the Lord God to
them that dwell in Jerusalem in the land of Israel:  They shall eat
their bread in care, and drink their water in desolation:  that the land
may become desolate from the multitude that is therein, for the
iniquity of all that dwell therein.

12:20. And the cities that are now inhabited shall be laid waste, and
the land shall be desolate:  and you shall know that I am the Lord.

12:21. And the word of the Lord came to me, saying:

12:22. Son of man, what is this proverb that you have in the land of
Israel?  saying:  The days shall be prolonged, and every vision shall
fail.

12:23. Say to them therefore:  Thus saith the Lord God:  I will make this
proverb to cease, neither shall it be any more a common saying in
Israel:  and tell them that the days are at hand, and the effect of
every vision.

12:24. For there shall be no more any vain visions, nor doubtful
divination in the midst of the children of Israel.

12:25. For I the Lord will speak:  and what word soever I shall speak,
it shall come to pass, and shall not be prolonged any more:  but in your
days, ye provoking house, I will speak the word, and will do it, saith
the Lord God.

12:26. And the word of the Lord came to me, saying:

12:27. Son of man, behold the house of Israel, they that say:  The
visions that this man seeth, is for many days to come:  and this man
prophesieth of times afar off.

12:28. Therefore say to them:  Thus saith the Lord God:  not one word of
mine shall be prolonged any more:  the word that I shall speak shall be
accomplished, saith the Lord God.



Ezechiel Chapter 13


God declares against false prophets and prophetesses, that deceive the
people with lies.

13:1. And the word of the Lord came to me, saying:

13:2. Son of man, prophesy thou against the prophets of Israel that
prophesy:  and thou shalt say to them that prophesy out of their own
heart:  Hear ye the word of the Lord:

13:3. Thus saith the Lord God:  Woe to the foolish prophets that follow
their own spirit, and see nothing.

13:4. Thy prophets, O Israel, were like foxes in the deserts.

13:5. You have not gone up to face the enemy, nor have you set up a
wall for the house of Israel, to stand in battle in the day of the
Lord.

13:6. They see vain things, and they foretell lies, saying:  The Lord
saith:  whereas the Lord hath not sent them:  and they have persisted to
confirm what they have said.

13:7. Have you not seen a vain vision and spoken a lying divination:
and you say:  The Lord saith:  whereas I have not spoken.

13:8. Therefore thus saith the Lord God:  Because you have spoken vain
things, and have seen lies:  therefore behold I come against you, saith
the Lord God.

13:9. And my hand shall be upon the prophets that see vain things, and
that divine lies:  they shall not be in the council of my people, nor
shall they be written in the writing of the house of Israel, neither
shall they enter into the land of Israel, and you shall know that I am
the Lord God.

13:10. Because they have deceived my people, saying:  Peace, and there
is no peace:  and the people built up a wall, and they daubed it with
dirt without straw.

13:11. Say to them that daub without tempering, that it shall fall:  for
there shall be an overflowing shower, and I will cause great hailstones
to fall violently from above, and a stormy wind to throw it down.

13:12. Behold, when the wall is fallen:  shall it not be said to you:
Where is the daubing wherewith you have daubed it?

13:13. Therefore thus saith the Lord God:  Lo, I will cause a stormy
wind to break forth in my indignation, and there shall be an
overflowing shower in my anger:  and great hailstones in my wrath to
consume.

13:14. And I will break down the wall that you have daubed with
untempered mortar:  and I will make it even with the ground, and the
foundation thereof shall be laid bare:  and it shall fall, and shall be
consumed in the midst thereof:  and you shall know that I am the Lord.

13:15. And I will accomplish my wrath upon the wall, and upon them that
daub it without tempering the mortar, and I will say to you:  The wall
is no more, and they that daub it are no more.

13:16. Even the prophets of Israel that prophesy to Jerusalem, and that
see visions of peace for her:  and there is no peace, saith the Lord
God.

13:17. And thou, son of man, set thy face against the daughters of thy
people that prophesy out of their own heart:  and do thou prophesy
against them,

13:18. And say:  Thus saith the Lord God:  Woe to them that sew cushions
under every elbow:  and make pillows for the heads of persons of every
age to catch souls:  and when they caught the souls of my people, they
gave life to their souls.

Sew cushions, etc. . .Viz., by making people easy in their sins, and
promising them impunity.--Ibid.  They gave life to their souls. . .That
is, they flattered them with promises of life, peace, and security.

13:19. And they violated me among my people, for a handful of barley,
and a piece of bread, to kill souls which should not die, and to save
souls alive which should not live, telling lies to my people that
believe lies.

Violated me. . .That is, dishonoured and discredited me.  Ibid.  To kill
souls, etc. . .That is, to sentence souls to death, which are not to
die; and to promise life to them who are not to live.

13:20. Therefore thus saith the Lord God:  Behold I declare against your
cushions, wherewith you catch flying souls:  and I will tear them off
from your arms:  and I will let go the soul that you catch, the souls
that should fly.

13:21. And I will tear your pillows, and will deliver my people out of
your hand, neither shall they be any more in your hands to be a prey:
and you shall know that I am the Lord.

13:22. Because with lies you have made the heart of the just to mourn,
whom I have not made sorrowful:  and have strengthened the hands of the
wicked, that he should not return from his evil way, and live.

13:23. Therefore you shall not see vain things, nor divine divinations
any more, and I will deliver my people out of your hand:  and you shall
know that I am the Lord.



Ezechiel Chapter 14


God suffers the wicked to be deceived in punishment of their
wickedness.  The evils that shall come upon them for their sins:  for
which they shall not be delivered by the prayers of Noe, Daniel, and
Job.  But a remnant shall be preserved.

14:1. And some of the ancients of Israel came to me, and sat before me.

14:2. And the word of the Lord came to me, saying:

14:3. Son of man, these men have placed their uncleannesses in their
hearts, and have set up before their face the stumblingblock of their
iniquity:  and shall I answer when they inquire of me?

Uncleanness. . .That is, their filthy idols, upon which they have set
their hearts:  and which are a stumblingblock to their souls.

14:4. Therefore speak to them, and say to them:  Thus saith the Lord
God:  Man, man of the house of Israel that shall place his uncleannesses
in his heart, and set up the stumblingblock of his iniquity before his
face, and shall come to the prophet inquiring of me by him:  I the Lord
will answer him according to the multitude of his uncleannesses:

Man, man. . .That is, every man, an Hebrew expression.

14:5. That the house of Israel may be caught in their own heart, with
which they have departed from me through all their idols.

14:6. Therefore say to the house of Israel:  Thus saith the Lord God:  Be
converted, and depart from your idols, and turn away your faces from
all your abominations.

14:7. For every man of the house of Israel, and every stranger among
the proselytes in Israel, if he separate himself from me, and place his
idols in his heart, and set the stumblingblock of his iniquity before
his face, and come to the prophet to inquire of me by him:  I the Lord
will answer him by myself.

14:8. And I will set my face against that man, and will make him an
example, and a proverb, and will cut him off from the midst of my
people:  and you shall know that I am the Lord.

14:9. And when the prophet shall err, and speak a word:  I the Lord have
deceived that prophet:  and I will stretch forth my hand upon him, and
will cut him off from the midst of my people Israel.

The prophet shall err, etc. . .He speaks of false prophets, answering
out of their own heads and according to their own corrupt
inclinations.--Ibid.  I have deceived that prophet. . .God Almighty
deceives false prophets, partly by withdrawing his light from them; and
abandoning them to their own corrupt inclinations, which push them on
to prophesy such things as are agreeable to those who consult them:  and
partly by disappointing them, and causing all thing to happen contrary
to what they have said.

14:10. And they shall bear their iniquity:  according to the iniquity of
him that inquireth, so shall the iniquity of the prophet be.

14:11. That the house of Israel may go no more astray from me, nor be
polluted with all their transgressions:  but may be my people, and I may
be their God, saith the Lord of hosts.

14:12. And the word of the Lord came to me, saying:

14:13. Son of man, when a land shall sin against me, so as to
transgress grievously, I will stretch forth my hand upon it, and will
break the staff of the bread thereof:  and I will send famine upon it,
and will destroy man and beast out of it.

14:14. And if these three men, Noe, Daniel, and Job, shall be in it:
they shall deliver their own souls by their justice, saith the Lord of
hosts.

14:15. And if I shall bring mischievous beasts also upon the land to
waste it, and it be desolate, so that there is none that can pass
because of the beasts:

14:16. If these three men shall be in it, as I live, saith the Lord,
they shall deliver neither sons nor daughters:  but they only shall be
delivered, and the land shall be made desolate.

14:17. Or if I bring the sword upon that land, and say to the sword:
Pass through the land:  and I destroy man and beast out of it:

14:18. And these three men be in the midst thereof:  as I live, saith
the Lord God, they shall deliver neither sons nor daughters, but they
themselves alone shall be delivered.

14:19. Or if I also send the pestilence upon that land, and pour out my
indignation upon it in blood, to cut off from it man and beast:

14:20. And Noe, and Daniel, and Job be in the midst thereof:  as I live,
saith the Lord God, they shall deliver neither son nor daughter:  but
they shall only deliver their own souls by their justice.

14:21. For thus saith the Lord:  Although I shall send in upon Jerusalem
my four grievous judgments, the sword, and the famine, and the
mischievous beasts, and the pestilence, to destroy out of it man and
beast,

14:22. Yet there shall be left in it some that shall be saved, who
shall bring away their sons and daughters:  behold they shall come among
you, and you shall see their way, and their doings:  and you shall be
comforted concerning the evil that I have brought upon Jerusalem, in
all things that I have brought upon it.

14:23. And they shall comfort you, when you shall see their ways, and
their doings:  and you shall know that I have not done without cause all
that I have done in it, saith the Lord God.



Ezechiel Chapter 15


As a vine cut down is fit for nothing but the fire; so it shall be with
Jerusalem, for her sins.

15:1. And the word of the Lord came to me, saying:

15:2. Son of man, what shall be made of the wood of the vine, out of
all the trees of the woods that are among the trees of the forests?

15:3. Shall wood be taken of it, to do any work, or shall a pin be made
of it for any vessel to hang thereon?

15:4. Behold it is cast into the fire for fuel:  the fire hath consumed
both ends thereof, and the midst thereof is reduced to ashes:  shall it
be useful for any work?

15:5. Even when it was whole it was not fit for work:  how much less,
when the fire hath devoured and consumed it, shall any work be made of
it?

15:6. Therefore thus saith the Lord God:  As the vine tree among the
trees of the forests which I have given to the fire to be consumed, so
will I deliver up the inhabitants of Jerusalem.

15:7. And I will set my face against them:  they shall go out from fire,
and fire shall consume them:  and you shall know that I am the Lord,
when I shall have set my face against them.

15:8. And I shall have made their land a wilderness, and desolate,
because they have been transgressors, saith the Lord God.



Ezechiel Chapter 16


Under the figure of an unfaithful wife, God upbraids Jerusalem with her
ingratitude and manifold disloyalties:  but promiseth mercy by a new
covenant.

16:1. And the word of the Lord came to me, saying:

16:2. Son of man, make known to Jerusalem her abominations.

Make known to Jerusalem. . .That is, by letters, for the prophet was
then in Babylon.

16:3. And thou shalt say:  Thus saith the Lord God to Jerusalem:  Thy
root, and thy nativity is of the land of Chanaan, thy father was an
Amorrhite, and thy mother a Cethite.

16:4. And when thou wast born, in the day of thy nativity thy navel was
not cut, neither wast thou washed with water for thy health, nor salted
with salt, nor swaddled with clouts.

16:5. No eye had pity on thee to do any of these things for thee, out
of compassion to thee:  but thou wast cast out upon the face of the
earth in the abjection of thy soul, in the day that thou wast born.

16:6. And passing by thee, I saw that thou wast trodden under foot in
thy own blood:  and I said to thee when thou wast in thy blood:  Live:  I
have said to thee:  Live in thy blood.

16:7. I caused thee to multiply as the bud of the field:  and thou didst
increase and grow great, and advancedst, and camest to woman's
ornament:  thy breasts were fashioned, and thy hair grew:  and thou was
naked, and full of confusion.

16:8. And I passed by thee, and saw thee:  and behold thy time was the
time of lovers:  and I spread my garment over thee, and covered thy
ignominy.  and I swore to thee, and I entered into a covenant with thee,
saith the Lord God:  and thou becamest mine.

16:9. And I washed thee with water, and cleansed away thy blood from
thee:  and I anointed thee with oil.

16:10. And I clothed thee with embroidery, and shod thee with violet
coloured shoes:  and I girded thee about with fine linen, and clothed
thee with fine garments.

16:11. I decked thee also with ornaments, and put bracelets on thy
hands, and a chain about thy neck.

I decked thee also with ornaments, etc. . .That is, with spiritual
benefits, giving you a law with sacrifices, sacraments, and other holy
rites.

16:12. And I put a jewel upon thy forehead and earrings in thy ears,
and a beautiful crown upon thy head.

16:13. And thou wast adorned with gold, and silver, and wast clothed
with fine linen, and embroidered work, and many colours:  thou didst eat
fine flour, and honey, and oil, and wast made exceeding beautiful:  and
wast advanced to be a queen.

16:14. And thy renown went forth among the nations for thy beauty:  for
thou wast perfect through my beauty, which I had put upon thee, saith
the Lord God.

16:15. But trusting in thy beauty, thou playedst the harlot because of
thy renown, and thou hast prostituted thyself to every passenger, to be
his.

16:16. And taking of thy garments thou hast made thee high places sewed
together on each side:  and hast played the harlot upon them, as hath
not been done before, nor shall be hereafter.

16:17. And thou tookest thy beautiful vessels, of my gold, and my
silver, which I gave thee, and thou madest thee images of men, and hast
committed fornication with them.

16:18. And thou tookest thy garments of divers colours, and coveredst
them:  and settest my oil and my sweet incense before them.

16:19. And my bread which I gave thee, the fine flour, and oil, and
honey, wherewith I fed thee, thou hast set before them for a sweet
odour; and it was done, saith the Lord God.

16:20. And thou hast taken thy sons, and thy daughters, whom thou hast
borne to me:  and hast sacrificed the same to them to be devoured.  Is
thy fornication small?

16:21. Thou hast sacrificed and given my children to them, consecrating
them by fire.

Thou hast sacrificed, etc. . .As there is nothing more base and
abominable than the crimes mentioned throughout this chapter; so the
infidelities of the Israelites in forsaking God, and sacrificing even
their children to idols, are strongly figured by these allegories.

16:22. And after all thy abominations, and fornications, thou hast not
remembered the days of thy youth, when thou wast naked, and full of
confusion, trodden under foot in thy own blood.

16:23. And it came to pass after all thy wickedness (woe, woe to thee,
saith the Lord God)

16:24. That thou didst also build thee a common stew, and madest thee a
brothel house in every street.

16:25. At every head of the way thou hast set up a sign of thy
prostitution:  and hast made thy beauty to be abominable:  and hast
prostituted thyself to every one that passed by, and hast multiplied
thy fornications.

16:26. And thou hast committed fornication with the Egyptians thy
neighbours, men of large bodies, and hast multiplied thy fornications
to provoke me.

16:27. Behold, I will stretch out my hand upon thee, and will take away
thy justification:  and I will deliver thee up to the will of the
daughters of the Philistines that hate thee, that are ashamed of thy
wicked way.

16:28. Thou hast also committed fornication with the Assyrians, because
thou wast not yet satisfied:  and after thou hadst played the harlot
with them, even so thou wast not contented.

16:29. Thou hast also multiplied thy fornications in the land of
Chanaan with the Chaldeans:  and neither so wast thou satisfied.

16:30. Wherein shall I cleanse thy heart, saith Lord God:  seeing thou
dost all these the works of a shameless prostitute?

16:31. Because thou hast built thy brothel house at the head of every
way, and thou hast made thy high place in every street:  and wast not as
a harlot that by disdain enhanceth her price,

16:32. But is an adulteress, that bringeth in strangers over her
husband.

16:33. Gifts are given to all harlots:  but thou hast given hire to all
thy lovers, and thou hast given them gifts to come to thee from every
side, to commit fornication with thee.

16:34. And it hath happened in thee contrary to the custom of women in
thy fornications, and after thee there shall be no such fornication,
for in that thou gavest rewards, and didst not take rewards, the
contrary hath been done in thee.

16:35. Therefore, O harlot, hear the word of the Lord.

16:36. Thus saith the Lord God:  Because thy money hath been poured out,
and thy shame discovered through thy fornications with thy lovers, and
with the idols of thy abominations, by the blood of thy children whom
thou gavest them:

16:37. Behold, I will gather together all thy lovers with whom thou
hast taken pleasure, and all whom thou hast loved, with all whom thou
hast hated:  and I will gather them together against thee on every side,
and will discover thy shame in their sight, and they shall see all thy
nakedness.

16:38. And I will judge thee as adulteresses, and they that shed blood
are judged:  and I will give thee blood in fury and jealousy.

16:39. And I will deliver thee into their hands, and they shall destroy
thy brothel house, and throw down thy stews:  and they shall strip thee
of thy garments, and shall take away the vessels of thy beauty:  and
leave thee naked, and full of disgrace.

16:40. And they shall bring upon thee a multitude, and they shall stone
thee with stones, and shall slay thee with their swords.

16:41. And they shall burn thy houses with fire, and shall execute
judgments upon thee in the sight of many women:  and thou shalt cease
from fornication, and shalt give no hire any more.

16:42. And my indignation shall rest in thee:  and my jealousy shall
depart from thee, and I will cease and be angry no more.

16:43. Because thou hast not remembered the days of thy youth, but hast
provoked me in all these things:  wherefore I also have turned all thy
ways upon thy head, saith the Lord God, and I have not done according
to thy wicked deeds in all thy abominations.

16:44. Behold every one that useth a common proverb, shall use this
against thee, saying:  As the mother was, so also is her daughter.

16:45. Thou art thy mother's daughter, that cast off her husband, and
her children:  and thou art the sister of thy sisters, who cast off
their husbands, and their children:  your mother was a Cethite, and your
father an Amorrhite.

16:46. And thy elder sister is Samaria, she and her daughters that
dwell at thy left hand:  and thy younger sister that dwelleth at thy
right hand is Sodom, and her daughters.

16:47. But neither hast thou walked in their ways, nor hast thou done a
little less than they according to their wickednesses:  thou hast done
almost more wicked things than they in all thy ways.

16:48. As I live, saith the Lord God, thy sister Sodom herself, and her
daughters, have not done as thou hast done, and thy daughters.

16:49. Behold this was the iniquity of Sodom thy sister, pride, fulness
of bread, and abundance, and the idleness of her, and of her daughters:
and they did not put forth their hand to the needy, and the poor.

This was the iniquity of Sodom, etc. . .That is, these were the steps by
which the Sodomites came to fall into those abominations for which they
were destroyed.  For pride, gluttony, and idleness are the highroad to
all kinds of lust; especially when they are accompanied with a neglect
of the works of mercy.

16:50. And they were lifted up, and committed abominations before me:
and I took them away as thou hast seen.

16:51. And Samaria committed not half thy sins:  but thou hast surpassed
them with thy crimes, and hast justified thy sisters by all thy
abominations which thou hast done.

16:52. Therefore do thou also bear thy confusion, thou that hast
surpassed thy sisters with thy sins, doing more wickedly than they:  for
they are justified above thee, therefore be thou also confounded, and
bear thy shame, thou that hast justified thy sisters.

16:53. And I will bring back and restore them by bringing back Sodom,
with her daughters, and by bringing back Samaria, and her daughters:
and I will bring those that return of thee in the midst of them.

I will bring back, etc. . .This relates to the conversion of the
Gentiles out of all nations, and of many of the Jews, to the church of
Christ.

16:54. That thou mayest bear thy shame, and mayest be confounded in all
that thou hast done, comforting them.

16:55. And thy sister Sodom and her daughters shall return to their
ancient state:  and Samaria and her daughters shall return to their
ancient state:  and thou and thy daughters shall return to your ancient
state.

Ancient state. . .That is, to their former state of liberty, and their
ancient possessions.  In the spiritual sense, to the true liberty, and
the happy inheritance of the children of God, through faith in Christ.

16:56. And Sodom thy sister was not heard of in thy mouth, in the day
of thy pride,

16:57. Before thy malice was laid open:  as it is at this time, making
thee a reproach of the daughters of Syria, and of all the daughters of
Palestine round about thee, that encompass thee on all sides.

16:58. Thou hast borne thy wickedness, and thy disgrace, saith the Lord
God.

16:59. For thus saith the Lord God:  I will deal with thee, as thou hast
despised the oath, in breaking the covenant:

16:60. And I will remember my covenant with thee in the days of thy
youth:  and I will establish with thee an everlasting covenant.

16:61. And thou shalt remember thy ways, and be ashamed:  when thou
shalt receive thy sisters, thy elder and thy younger:  and I will give
them to thee for daughters, but not by thy covenant.

16:62. And I will establish my covenant with thee:  and thou shalt know
that I am the Lord,

16:63. That thou mayest remember, and be confounded, and mayest no more
open thy mouth because of thy confusion, when I shall be pacified
toward thee for all that thou hast done, saith the Lord God.



Ezechiel Chapter 17


The parable of the two eagles and the vine.  A promise of the cedar of
Christ and his church.

17:1. And the word of the Lord came to me, saying:

17:2. Son of man, put forth a riddle, and speak a parable to the house
of Israel,

17:3. And say:  Thus saith the Lord God; A large eagle with great wings,
long-limbed, full of feathers, and of variety, came to Libanus, and
took away the marrow of the cedar.

A large eagle. . .Nabuchodonosor, king of Babylon.--Ibid.  Came to
Libanus. . .That is, to Jerusalem.--Ibid.  Took away the marrow of the
cedar. . .King Jechonias.

17:4. He cropped off the top of the twigs thereof:  and carried it away
into the land of Chanaan, and he set it in a city of merchants.

Chanaan. . .This name, which signifies traffic, is not taken here for
Palestine, but for Chaldea:  and the city of merchants here mentioned is
Babylon.

17:5. And he took of the seed of the land, and put it in the ground for
seed, that it might take a firm root over many waters:  he planted it on
the surface of the earth.

Of the seed of the land, etc. . .Viz., Sedecias, whom he made king.

17:6. And it sprung up and grew into a spreading vine of low stature,
and the branches thereof looked towards him:  and the roots thereof were
under him.  So it became a vine, and grew into branches, and shot forth
sprigs.

Towards him. . .Nabuchodonosor, to whom Sedecias swore allegiance.

17:7. And there was another large eagle, with great wings, and many
feathers:  and behold this vine, bending as it were her roots towards
him, stretched forth her branches to him, that he might water it by the
furrows of her plantation.

Another large eagle. . .Viz., the king of Egypt.

17:8. It was planted in a good ground upon many waters, that it might
bring forth branches, and bear fruit, that it might become a large
vine.

17:9. Say thou:  Thus saith the Lord God:  Shall it prosper then?  shall
he not pull up the roots thereof, and strip off its fruit, and dry up
all the branches it hath shot forth, and make it wither:  and this
without a strong arm, or many people to pluck it up by the root?

17:10. Behold, it is planted:  shall it prosper then?  shall it not be
dried up when the burning wind shall touch it, and shall it not wither
in the furrows where it grew?

17:11. And the word of the Lord came to me, saying:

17:12. Say to the provoking house:  Know you not what these things mean?
Tell them:  Behold the king of Babylon cometh to Jerusalem:  and he shall
take away the king and the princes thereof and carry them with him to
Babylon.

Shall take away. . .Or, hath taken away, etc., for all this was now
done.

17:13. And he shall take one of the king's seed, and make a covenant
with him, and take an oath of him.  Yea, and he shall take away the
mighty men of the land,

17:14. That it may be a low kingdom and not lift itself up, but keep
his covenant and observe it.

17:15. But he hath revolted from him and sent ambassadors to Egypt,
that it might give him horses, and much people.  And shall he that hath
done thus prosper, or be saved?  and shall he escape that hath broken
the covenant?

17:16. As I live, saith the Lord God:  In the place where the king
dwelleth that made him king, whose oath he hath made void, and whose
covenant he broke, even in the midst of Babylon shall he die.

17:17. And not with a great army, nor with much people shall Pharao
fight against him:  when he shall cast up mounts, and build forts, to
cut off many souls.

17:18. For he had despised the oath, breaking his covenant, and behold
he hath given his hand:  and having done all these things, he shall not
escape.

17:19. Therefore thus saith the Lord God:  As I live, I will lay upon
his head the oath he hath despised, and the covenant he hath broken.

17:20. And I will spread my net over him, and he shall be taken in my
net:  and I will bring him into Babylon, and will judge him there for
the transgression by which he hath despised me.

17:21. And all his fugitives with all his bands shall fall by the
sword:  and the residue shall be scattered into every wind:  and you
shall know that I the Lord have spoken.

17:22. Thus saith the Lord God:  I myself will take of the marrow of the
high cedar, and will set it:  I will crop off a tender twig from the top
of the branches thereof, and I will plant it on a mountain high and
eminent.

Of the marrow of the high cedar, etc. . .Of the royal stock of
David.--Ibid.  A tender twig. . .Viz., Jesus Christ, whom God hath
planted in mount Sion, that is, the high mountain of his church, to
which all nations flow.

17:23. On the high mountains of Israel will I plant it, and it shall
shoot forth into branches and shall bear fruit, and it shall become a
great cedar:  and all birds shall dwell under it, and every fowl shall
make its nest under the shadow of the branches thereof.

17:24. And all the trees of the country shall know that I the Lord have
brought down the high tree, and exalted the low tree:  and have dried up
the green tree, and have caused the dry tree to flourish.  I the Lord
have spoken and have done it.



Ezechiel Chapter 18


One man shall not bear the sins of another, but every one his own; if a
wicked man truly repent, he shall be saved; and if a just man leave his
justice, he shall perish.

18:1. And the word of the Lord came to me, saying:  What is the meaning?

18:2. That you use among you this parable as a proverb in the land of
Israel, saying:  The fathers have eaten sour grapes, and the teeth of
the children are set on edge.

18:3. As I live, saith the Lord God, this parable shall be no more to
you a proverb in Israel.

18:4. Behold all souls are mine:  as the soul of the father, so also the
soul of the son is mine:  the soul that sinneth, the same shall die.

18:5. And if a man be just, and do judgment and justice,

18:6. And hath not eaten upon the mountains, nor lifted up his eyes to
the idols of the house of Israel:  and hath not defiled his neighbour's
wife, nor come near to a menstruous woman:

Not eaten upon the mountains. . .That is, of the sacrifices there
offered to idols.

18:7. And hath not wronged any man:  but hath restored the pledge to the
debtor, hath taken nothing away by violence:  hath given his bread to
the hungry, and hath covered the naked with a garment:

18:8. Hath not lent upon usury, nor taken any increase:  hath withdrawn
his hand from iniquity, and hath executed true judgment between man and
man:

18:9. Hath walked in my commandments, and kept my judgments, to do
truth:  he is just, he shall surely live, saith the Lord God.

To do truth. . .That is, to act according to truth; for the Hebrews
called everything that was just, truth.

18:10. And if he beget a son that is a robber, a shedder of blood, and
that hath done some one of these things:

18:11. Though he doth not all these things, but that eateth upon the
mountains, and that defileth his neighbour's wife:

18:12. That grieveth the needy and the poor, that taketh away by
violence, that restoreth not the pledge, and that lifteth up his eyes
to idols, that comitteth abomination:

18:13. That giveth upon usury, and that taketh an increase:  shall such
a one live?  he shall not live.  Seeing he hath done all these detestable
things, he shall surely die, his blood shall be upon him.

18:14. But if he beget a son, who, seeing all his father's sins, which
he hath done, is afraid, and shall not do the like to them:

18:15. That hath not eaten upon the mountains, nor lifted up his eyes
to the idols of the house of Israel, and hath not defiled his
neighbour's wife:

18:16. And hath not grieved any man, nor withholden the pledge, nor
taken away with violence, but hath given his bread to the hungry, and
covered the naked with a garment:

18:17. That hath turned away his hand from injuring the poor, hath not
taken usury and increase, but hath executed my judgments, and hath
walked in my commandments:  this man shall not die for the iniquity of
his father, but living he shall live.

18:18. As for his father, because he oppressed and offered violence to
his brother, and wrought evil in the midst of his people, behold he is
dead in his own iniquity.

18:19. And you say:  Why hath not the son borne the iniquity of his
father?  Verily, because the son hath wrought judgment and justice, hath
kept all my commandments, and done them, living, he shall live.

18:20. The soul that sinneth, the same shall die:  the son shall not
bear the iniquity of the father, and the father shall not bear the
iniquity of the son:  the justice of the just shall be upon him, and the
wickedness of the wicked shall be upon him.

18:21. But if the wicked do penance for all his sins which he hath
committed, and keep all my commandments, and do judgment, and justice,
living he shall live, and shall not die.

18:22. I will not remember all his iniquities that he hath done:  in his
justice which he hath wrought, he shall live.

18:23. Is it my will that a sinner should die, saith the Lord God, and
not that he should be converted from his ways, and live?

18:24. But if the just man turn himself away from his justice, and do
iniquity according to all the abominations which the wicked man useth
to work, shall he live?  all his justices which he hath done, shall not
be remembered:  in the prevarication, by which he hath prevaricated, and
in his sin, which he hath committed, in them he shall die.

18:25. And you have said:  The way of the Lord is not right.  Hear ye,
therefore, O house of Israel:  Is it my way that is not right, and are
not rather your ways perverse?

18:26. For when the just turneth himself away from his justice, and
comitteth iniquity, he shall die therein:  in the injustice that he hath
wrought he shall die.

18:27. And when the wicked turneth himself away from his wickedness,
which he hath wrought, and doeth judgment, and justice:  he shall save
his soul alive.

18:28. Because he considereth and turneth away himself from all his
iniquities which he hath wrought, he shall surely live, and not die.

18:29. And the children of Israel say:  The way of the Lord is not
right.  Are not my ways right, O house of Israel, and are not rather
your ways perverse?

18:30. Therefore will I judge every man according to his ways, O house
of Israel, saith the Lord God.  Be converted, and do penance for all
your iniquities:  and iniquity shall not be your ruin.

18:31. Cast away from you all your transgressions, by which you have
transgressed, and make to yourselves a new heart, and a new spirit:  and
why will you die, O house of Israel?

18:32. For I desire not the death of him that dieth, saith the Lord
God, return ye and live.



Ezechiel Chapter 19


The parable of the young lions, and of the vineyard that is wasted.

19:1. Moreover take thou up a lamentation for the princes of Israel,

19:2. And say:  Why did thy mother the lioness lie down among the lions,
and bring up her whelps in the midst of young lions?

Thy mother the lioness. . .Jerusalem.

19:3. And she brought out one of her whelps, and he became a lion:  and
he learned to catch the prey, and to devour men.

One of her whelps. . .Viz., Joachaz, alias Sellum.

19:4. And the nations heard of him, and took him, but not without
receiving wounds:  and they brought him in chains into the land of
Egypt.

19:5. But she seeing herself weakened, and that her hope was lost, took
one of her young lions, and set him up for a lion.

One of her young lions. . .Joakim.

19:6. And he went up and down among the lions, and became a lion:  and
he learned to catch the prey, and to devour men.

19:7. He learned to make widows, and to lay waste their cities:  and the
land became desolate, and the fulness thereof by the noise of his
roaring.

19:8. And the nations came together against him on every side out of
the provinces, and they spread their net over him, in their wounds he
was taken.

19:9. And they put him into a cage, they brought him in chains to the
king of Babylon:  and they cast him into prison, that his voice should
no more be heard upon the mountains of Israel.

19:10. Thy mother is like a vine in thy blood planted by the water:  her
fruit and her branches have grown out of many waters.

19:11. And she hath strong rods to make sceptres for them that bear
rule, and her stature was exalted among the branches:  and she saw her
height in the multitude of her branches.

19:12. But she was plucked up in wrath, and cast on the ground, and the
burning wind dried up her fruit:  her strong rods are withered, and
dried up:  the fire hath devoured her.

19:13. And now she is transplanted into the desert, in a land not
passable, and dry.

19:14. And a fire is gone out from a rod of her branches, which hath
devoured her fruit:  so that she now hath no strong rod, to be a sceptre
of rulers.  This is a lamentation, and it shall be for a lamentation.



Ezechiel Chapter 20


God refuses to answer the ancients of Israel inquiring by the prophet:
but by him setteth his benefits before their eyes, and their heinous
sins:  threatening yet greater punishments:  but still mixed with mercy.

20:1. And it came to pass in the seventh year, in the fifth month, the
tenth day of the month:  there came men of the ancients of Israel to
inquire of the Lord, and they sat before me.

20:2. And the word of the Lord came to me, saying:

20:3. Son of man, speak to the ancients of Israel and say to them:  Thus
saith the Lord God:  Are you come to inquire of me?  As I live, I will
not answer you, saith the Lord God.

20:4. If thou judgest them, if thou judgest, O son of man, declare to
them the abominations of their fathers.

If thou judgest them. . .Or, if thou wilt enter into the cause and plead
against them.

20:5. And say to them:  Thus saith the Lord God:  In the day when I chose
Israel, and lifted up my hand for the race of the house of Jacob:  and
appeared to them in the land of Egypt, and lifted up my hand for them,
saying:  I am the Lord your God:

20:6. In that day I lifted up my hand for them to bring them out of the
land of Egypt, into a land which I had provided for them, flowing with
milk and honey, which excelled amongst all lands.

20:7. And I said to them:  Let every man cast away the scandals of his
eyes, and defile not yourselves with the idols of Egypt:  I am the Lord
your God.

Scandals, etc. . .Offensiones.  That is, the abominations or idols, to
the worship of which they were allured by their eyes.

20:8. But they provoked me, and would not hearken to me:  they did not
every man cast away the abominations of his eyes, neither did they
forsake the idols of Egypt:  and I said I would pour out my indignation
upon them, and accomplish my wrath against them in the midst of the
land of Egypt.

20:9. But I did otherwise for my name's sake, that it might not be
violated before the nations, in the midst of whom they were, and among
whom I made myself known to them, to bring them out of the land of
Egypt.

20:10. Therefore I brought them out from the land of Egypt, and brought
them into the desert.

20:11. And I gave them my statutes, and I shewed them my judgments,
which if a man do, he shall live in them.

20:12. Moreover I gave them also my sabbaths, to be a sign between me
and them:  and that they might know that I am the Lord that sanctify
them.

20:13. But the house of Israel provoked me in the desert:  they walked
not in my statutes, and they cast away my judgments, which if a man do
he shall live in them:  and they grievously violated my sabbaths.  I said
therefore that I would pour out my indignation upon them in the desert,
and would consume them.

20:14. But I spared them for the sake of my name, lest it should be
profaned before the nations, from which I brought them out, in their
sight.

20:15. So I lifted up my hand over them in the desert, not to bring
them into the land which I had given them flowing with milk and honey,
the best of all lands.

20:16. Because they cast off my judgments, and walked not in my
statutes, and violated my sabbaths:  for their heart went after idols.

20:17. Yet my eye spared them, so that I destroyed them not:  neither
did I consume them in the desert.

20:18. And I said to their children in the wilderness:  Walk not in the
statutes of your fathers, and observe not their judgments, nor be ye
defiled with their idols:

20:19. I am the Lord your God:  walk ye in my statutes, and observe my
judgments, and do them.

20:20. And sanctify my sabbaths, that they may be a sign between me and
you:  and that you may know that I am the Lord your God.

20:21. But their children provoked me, they walked not in my
commandments, nor observed my judgments to do them:  which if a man do,
he shall live in them:  and they violated my sabbaths:  and I threatened
to pour out my indignation upon them, and to accomplish my wrath in
them in the desert.

20:22. But I turned away my hand, and wrought for my name's sake, that
it might not be violated before the nations, out of which I brought
them forth in their sight.

20:23. Again I lifted up my hand upon them in the wilderness, to
disperse them among the nations, and scatter them through the
countries:

20:24. Because they had not done my judgments, and had cast off my
statutes, and had violated my sabbaths, and their eyes had been after
the idols of their fathers.

20:25. Therefore I also gave them statutes that were not good, and
judgments, in which they shall not live.

Statutes that were not good, etc. . .Viz., the laws and ordinances of
their enemies; or those imposes upon them by that cruel tyrant the
devil, to whose power they were delivered up for their sins.

20:26. And I polluted them in their own gifts, when they offered all
that opened the womb, for their offences:  and they shall know that I am
the Lord.

I polluted them, etc. . .That is, I gave them up to such blindness in
punishment of their offences, as to pollute themselves with the blood
of all their firstborn, whom they offered up to their idols in
compliance with their wicked devices.

20:27. Wherefore speak to the house of Israel, O son of man, and say to
them:  Thus saith the Lord God:  Moreover in this also your fathers
blaspheme me, when they had despised and contemned me;

20:28. And I had brought them into the land, for which I lifted up my
hand to give it them:  they saw every high hill, and every shady tree,
and there they sacrificed their victims:  and there they presented the
provocation of their offerings, and there they set their sweet odours,
and poured forth their libations.

20:29. And I said to them:  What meaneth the high place to which you go?
and the name thereof was called High-place even to this day.

20:30. Wherefore say to the house of Israel:  Thus saith the Lord God:
Verily, you are defiled in the way of your fathers, and you commit
fornication with their abominations.

20:31. And you defile yourselves with all your idols unto this day, in
the offering of your gifts, when you make your children pass through
the fire:  and shall I answer you, O house of Israel?  As I live, saith
the Lord God, I will not answer you.

20:32. Neither shall the thought of your mind come to pass, by which
you say:  We will be as the Gentiles, and as the families of the earth,
to worship stocks and stones.

20:33. As I live, saith the Lord God, I will reign over you with a
strong hand, and with a stretched out arm, and with fury poured out.

20:34. And I will bring you out from the people, and I will gather you
out of the countries, in which you are scattered, I will reign over you
with a strong hand and with a stretched out arm, and with fury poured
out.

20:35. And I will bring you into the wilderness of people, and there
will I plead with you face to face.

The wilderness of people. . .That is, a desert in which there are no
people.

20:36. As I pleaded against your fathers in the desert of the land of
Egypt; even so will I judge you, saith the Lord God.

20:37. And I will make you subject to my sceptre, and will bring you
into the bands of the covenant.

20:38. And I will pick out from among you the transgressors, and the
wicked, and will bring them out of the land where they sojourn, and
they shall not enter into the land of Israel:  and you shall know that I
am the Lord.

20:39. And as for you, O house of Israel:  thus saith the Lord God:  Walk
ye every one after your idols, and serve them.  But if in this also you
hear me not, but defile my holy name any more with your gifts, and with
your idols;

Walk ye every one, etc. . .It is not an allowance, much less a
commandment to serve idols; but a figure of speech, by which God would
have them to understand that if they would walk after their idols, they
must not pretend to serve him at the same time:  for that he would by no
means suffer such a mixture of worship.

20:40. In my holy mountain, in the high mountain of Israel, saith the
Lord God, there shall all the house of Israel serve me; all of them I
say, in the land in which they shall please me, and there will I
require your firstfruits, and the chief of your tithes with all your
sanctifications.

In my holy mountain, etc. . .The foregoing verse, to make the sense
complete, must be understood so as to condemn and reject that mixture
of worship which the Jews then followed.  In this verse, God promises to
the true Israelites, especially to those of the Christian church, that
they shall serve him in another manner, in his holy mountain, the
spiritual Sion:  and shall by accepted of by him.

20:41. I will accept of you for an odour of sweetness, when I shall
have brought you out from the people, and shall have gathered you out
of the lands into which you are scattered, and I will be sanctified in
you in the sight of the nations.

20:42. And you shall know that I am the Lord, when I shall have brought
you into the land of Israel, into the land for which I lifted up my
hand to give it to your fathers.

20:43. And there you shall remember your ways, and all your wicked
doings with which you have been defiled; and you shall be displeased
with yourselves in your own sight, for all your wicked deeds which you
committed.

20:44. And you shall know that I am the Lord, when I shall have done
well by you for my own name's sake, and not according to your evil
ways, nor according to your wicked deeds, O house of Israel, saith the
Lord God.

20:45. And the word of the Lord came to me, saying:

20:46. Son of man, set thy face against the way of the south, and drop
towards the south, and prophesy against the forest of the south field.

Of the south. . .Jerusalem lay towards the south of Babylon, (where the
prophet then was,) and is here called the forest of the south field,
and is threatened with utter desolation.

20:47. And say to the south forest:  Hear the word of the Lord:  Thus
saith the Lord God:  Behold I will kindle a fire in thee, and will burn
in thee every green tree, and every dry tree:  the flame of the fire
shall not be quenched:  and every face shall be burned in it, from the
south even to the north.

20:48. And all flesh shall see, that I the Lord have kindled it, and it
shall not be quenched.

20:49. And I said:  Ah, ah, ah, O Lord God:  they say of me:  Doth not
this man speak by parables?



Ezechiel Chapter 21


The destruction of Jerusalem by the sword is further described:  the
ruin also of the Ammonites is forshewn.  And finally Babylon, the
destroyer of others, shall be destroyed.

21:1. And the word of the Lord came to me, saying:

21:2. Son of man, set thy face toward Jerusalem, and let thy speech
flow towards the holy places, and prophesy against the land of Israel:

21:3. And say to the land of Israel, Thus saith the Lord God:  Behold I
come against thee, and I will draw forth my sword out of its sheath,
and will cut off in thee the just, and the wicked.

21:4. And forasmuch as I have cut off in thee the just and the wicked,
therefore shall my sword go forth out of its sheath against all flesh,
from the south even to the north.

21:5. That all flesh may know that I the Lord have drawn my sword out
of its sheath not to be turned back.

21:6. And thou, son of man, mourn with the breaking of thy loins, and
with bitterness sigh before them.

21:7. And when they shall say to thee:  Why mournest thou?  thou shalt
say:  For that which I hear:  because it cometh, and every heart shall
melt, and all hands shall be made feeble, and every spirit shall faint,
and water shall run down every knee:  behold it cometh, and it shall be
done, saith the Lord God.

21:8. And the word of the Lord came to me, saying:

21:9. Son of man, prophesy, and say:  Thus saith the Lord God:  Say:  The
sword, the sword is sharpened, and furbished.

21:10. It is sharpened to kill victims:  it is furbished that it may
glitter:  thou removest the sceptre of my son, thou hast cut down every
tree.

Thou removest the sceptre of my son. . .He speaks (according to St.
Jerome) to the sword of Nabuchodonosor:  which was about to remove the
sceptre of Israel, whom God here calls his son.

21:11. And I have given it to be furbished, that it may be handled:
this sword is sharpened, and it is furbished, that it may be in the
hand of the slayer.

21:12. Cry, and howl, O son of man, for this sword is upon my people,
it is upon all the princes of Israel, that are fled:  they are delivered
up to the sword with my people, strike therefore upon thy thigh,

21:13. Because it is tried:  and that when it shall overthrow the
sceptre, and it shall not be, saith the Lord God.

21:14. Thou therefore, O son of man, prophesy, and strike thy hands
together, and let the sword be doubled, and let the sword of the slain
be tripled:  this is the sword of a great slaughter, that maketh them
stand amazed,

21:15. And languish in heart, and that multiplieth ruins.  In all their
gates I have set the dread of the sharp sword, the sword that is
furbished to glitter, that is made ready for slaughter.

21:16. Be thou sharpened, go to the right hand, or to the left, which
way soever thou hast a mind to set thy face.

21:17. And I will clap my hands together, and will satisfy my
indignation:  I the Lord have spoken.

21:18. And the word of the Lord came to me, saying:

21:19. And thou son of man, set thee two ways, for the sword of the
king of Babylon to come:  both shall come forth out of one land:  and
with his hand he shall draw lots, he shall consult at the head of the
way of the city.

21:20. Thou shalt make a way that the sword may come to Rabbath of the
children of Ammon, and to Juda unto Jerusalem the strong city.

21:21. For the king of Babylon stood in the highway, at the head of two
ways, seeking divination, shuffling arrows:  he inquired of the idols,
and consulted entrails.

21:22. On his right hand was the divination for Jerusalem, to set
battering rams, to open the mouth in slaughter, to lift up the voice in
howling, to set engines against the gates, to cast up a mount, to build
forts.

21:23. And he shall be in their eyes as one consulting the oracle in
vain, and imitating the leisure of sabbaths:  but he will call to
remembrance the iniquity that they may be taken.

21:24. Therefore thus saith the Lord God:  Because you have remembered
your iniquity, and have discovered your prevarications, and your sins
have appeared in all your devices:  because, I say, You have remembered,
you shall be taken with the hand.

21:25. But thou profane wicked prince of Israel, whose day is come that
hath been appointed in the time of iniquity:

Thou profane, etc. . .He speaks to king Sedecias, who had broken his
oath, and was otherwise a wicked prince.

21:26. Thus saith the Lord God:  Remove the diadem, take off the crown:
is it not this that hath exalted the low one, and brought down him that
was high?

Is it not this that hath exalted the low one. . .The royal crown of Juda
had exalted Sedecias from a private state and condition to the
sovereign power, as the loss of it had brought down Jechonias, etc.

21:27. I will shew it to be iniquity, iniquity, iniquity:  but this was
not done till he came to whom judgment belongeth, and I will give it
him.

I will shew it to be iniquity, etc. . .Or, I will overturn it, viz., the
crown of Juda for the manifold iniquities of the kings:  but it shall
not be utterly removed, till Christ come whose right it is:  and who
shall reign in the spiritual house of Jacob, that is, in his church,
for evermore.

21:28. And thou son of man, prophesy, and say:  Thus saith the Lord God
concerning the children of Ammon, and concerning their reproach, and
thou shalt say:  O sword, O sword, come out of the scabbard to kill, be
furbished to destroy, and to glitter,

Concerning their reproach. . .By which they had reproached and insulted
over the Jews, at the time of the destruction of Jerusalem.

21:29. Whilst they see vain things in thy regard, and they divine lies:
to bring thee upon the necks of the wicked that are wounded, whose
appointed day is come in the time of iniquity.

21:30. Return into thy sheath.  I will judge thee in the place wherein
thou wast created, in the land of thy nativity.

Return into thy sheath, etc. . .The sword of Babylon, after raging
against many nations, was shortly to be judged and destroyed at home by
the Medes and Persians.

21:31. And I will pour out upon thee my indignation:  in the fire of my
rage will I blow upon thee, and will give thee into the hands of men
that are brutish and contrive thy destruction.

21:32. Thou shalt be fuel for the fire, thy blood shall be in the midst
of the land, thou shalt be forgotten:  for I the Lord have spoken it.



Ezechiel Chapter 22


The general corruption of the inhabitants of Jerusalem:  for which God
will consume them as dross in his furnace.

22:1. And the word of the Lord came to me, saying:

22:2. And thou son of man, dost thou not judge, dost thou not judge the
city of blood?

22:3. And thou shalt shew her all her abominations, and shalt say:  Thus
saith the Lord God:  This is the city that sheddeth blood in the midst
of her, that her time may come:  and that hath made idols against
herself, to defile herself.

22:4. Thou art become guilty in thy blood which thou hast shed:  and
thou art defiled in thy idols which thou hast made:  and thou hast made
thy days to draw near, and hast brought on the time of thy years:
therefore have I made thee a reproach to the Gentiles, and a mockery to
all countries.

22:5. Those that are near, and those that are far from thee, shall
triumph over thee:  thou filthy one, infamous, great in destruction.

22:6. Behold the princes of Israel, every one hath employed his arm in
thee to shed blood.

22:7. They have abused father and mother in thee, they have oppressed
the stranger in the midst of thee, they have grieved the fatherless and
widow in thee.

22:8. Thou hast despised my sanctuaries, and profaned my sabbaths.

22:9. Slanderers have been in thee to shed blood, and they have eaten
upon the mountains in thee, they have committed wickedness in the midst
of thee.

22:10. They have discovered the nakedness of their father in thee, they
have humbled the uncleanness of the menstruous woman in thee.

22:11. And every one hath committed abomination with his neighbour's
wife, and the father in law hath wickedly defiled his daughter in law,
the brother hath oppressed his sister the daughter of his father in
thee.

22:12. They have taken gifts in thee to shed blood:  thou hast taken
usury and increase, and hast covetously oppressed thy neighbours:  and
thou hast forgotten me, saith the Lord God.

22:13. Behold, I have clapped my hands at thy covetousness, which thou
hast exercised:  and at the blood that hath been shed in the midst of
thee.

22:14. Shall thy heart endure, or shall thy hands prevail in the days
which I will bring upon thee:  I the Lord have spoken, and will do it.

22:15. And I will disperse thee in the nations, and will scatter thee
among the countries, and I will put an end to thy uncleanness in thee.

22:16. And I will possess thee in the sight of the Gentiles, and thou
shalt know that I am the Lord.

22:17. And the word of the Lord came to me, saying:

22:18. Son of man, the house of Israel is become dross to me:  all these
are brass, and tin, and iron, and lead, in the midst of the furnace:
they are become the dross of silver.

22:19. Therefore thus saith the Lord God:  Because you are all turned
into dross, therefore behold I will gather you together in the midst of
Jerusalem.

22:20. As they gather silver, and brass, and tin, and iron, and lead in
the midst of the furnace:  that I may kindle a fire in it to melt it:  so
will I gather you together in my fury and in my wrath, and will take my
rest, and I will melt you down.

22:21. And will gather you together, and will burn you in the fire of
my wrath, and you shall be melted in the midst thereof.

22:22. As silver is melted in the midst of the furnace, so shall you be
in the midst thereof:  and you shall know that I am the Lord, when I
have poured out my indignation upon you.

22:23. And the word of the Lord came to me, saying:

22:24. Son of man, say to her:  Thou art a land that is unclean, and not
rained upon in the day of wrath.

22:25. There is a conspiracy of prophets in the midst thereof:  like a
lion that roareth and catcheth the prey, they have devoured souls, they
have taken riches and hire, they have made many widows in the midst
thereof.

22:26. Her priests have despised my law, and have defiled my
sanctuaries:  they have put no difference between holy and profane:  nor
have distinguished between the polluted and the clean:  and they have
turned away their eyes from my sabbaths, and I was profaned in the
midst of them.

22:27. Her princes in the midst of her, are like wolves ravening the
prey to shed blood, and to destroy souls, and to run after gains
through covetousness.

22:28. And her prophets have daubed them without tempering the mortar,
seeing vain things, and divining lies unto them, saying:  Thus saith the
Lord God:  when the Lord hath not spoken.

22:29. The people of the land have used oppression, and committed
robbery:  they afflicted the needy and poor, and they oppressed the
stranger by calumny without judgment.

22:30. And I sought among them for a man that might set up a hedge, and
stand in the gap before me in favour of the land, that I might not
destroy it:  and I found none.

22:31. And I poured out my indignation upon them, in the fire of my
wrath I consumed them:  I have rendered their way upon their own head,
saith the Lord God.



Ezechiel Chapter 23


Under the names of the two harlots, Oolla and Ooliba, are described the
manifold disloyalties of Samaria and Jerusalem, with the punishment of
them both.

23:1. And the word of the Lord came to me, saying:

23:2. Son of man, there were two women, daughters of one mother.

23:3. And they committed fornication in Egypt, in their youth they
committed fornication:  there were their breasts pressed down, and the
teats of their virginity were bruised.

Committed fornication. . .That is, idolatry.

23:4. And their names were Oolla the elder, and Ooliba her younger
sister:  and I took them, and they bore sons and daughters.  Now for
their names, Samaria is Oolla, and Jerusalem is Ooliba.

Oolla and Ooliba. . .God calls the kingdom of Israel Oolla, which
signifies their own habitation, because they separated themselves from
his temple:  and the kingdom of Juda, Ooliba, which signifies his
habitation in her, because of his temple among them in Jerusalem.

23:5. And Oolla committed fornication against me, and doted on her
lovers, on the Assyrians that came to her,

On the Assyraians, etc. . .That is, the idols of the Assyrians:  for all
that is said in this chapter of the fornications of Israel and Juda, is
to be understood in a spiritual sense, of their disloyalty to the Lord,
by worshipping strange gods.

23:6. Who were clothed with blue, princes, and rulers, beautiful
youths, all horsemen, mounted upon horses.

23:7. And she committed her fornications with those chosen men, all
sons of the Assyrians:  and she defiled herself with the uncleanness of
all them on whom she doted.

23:8. Moreover also she did not forsake her fornications which she had
committed in Egypt:  for they also lay with her in her youth, and they
bruised the breasts of her virginity, and poured out their fornication
upon her.

23:9. Therefore have I delivered her into the hands of her lovers, into
the hands of the sons of the Assyrians, upon whose lust she doted.

23:10. They discovered her disgrace, took away her sons and daughters,
and slew her with the sword:  and they became infamous women, and they
executed judgments in her.

23:11. And when her sister Ooliba saw this, she was mad with lust more
than she:  and she carried her fornication beyond the fornication of her
sister.

23:12. Impudently prostituting herself to the children of the
Assyrians, the princes, and rulers that came to her, clothed with
divers colours, to the horsemen that rode upon horses, and to young men
all of great beauty.

23:13. And I saw that she was defiled, and that they both took one way.

23:14. And she increased her fornications:  and when she had seen men
painted on the wall, the images of the Chaldeans set forth in colours,

23:15. And girded with girdles about their reins, and with dyed turbans
on their heads, the resemblance of all the captains, the likeness of
the sons of Babylon, and of the land of the Chaldeans wherein they were
born,

23:16. She doted upon them with the lust of her eyes, and she sent
messengers to them into Chaldea.

23:17. And when the sons of Babylon were come to her to the bed of
love, they defiled her with their fornications, and she was polluted by
them, and her soul was glutted with them.

23:18. And she discovered her fornications, and discovered her
disgrace:  and my soul was alienated from her, as my soul was alienated
from her sister.

23:19. For she multiplied her fornications, remembering the days of her
youth, in which she played the harlot in the land of Egypt.

23:20. And she was mad with lust after lying with them whose flesh is
as the flesh of asses:  and whose issue as the issue of horses.

23:21. And thou hast renewed the wickedness of thy youth, when thy
breasts were pressed in Egypt, and the paps of thy virginity broken.

23:22. Therefore, Ooliba, thus saith the Lord God:  Behold I will raise
up against thee all thy lovers with whom thy soul hath been glutted:
and I will gather them together against thee round about.

23:23. The children of Babylon, and all the Chaldeans, the nobles, and
the kings, and princes, all the sons of the Assyrians, beautiful young
men, all the captains, and rulers, the princes of princes, and the
renowned horsemen.

23:24. And they shall come upon thee well appointed with chariot and
wheel, a multitude of people:  they shall be armed against thee on every
side with breastplate, and buckler, and helmet:  and I will set judgment
before them, and they shall judge thee by their judgments.

23:25. And I will set my jealousy against thee, which they shall
execute upon thee with fury:  they shall cut off thy nose and thy ears:
and what remains shall fall by the sword:  they shall take thy sons, and
thy daughters, and thy residue shall be devoured by fire.

23:26. And they shall strip thee of thy garments, and take away the
instruments of thy glory.

23:27. And I will put an end to thy wickedness in thee, and thy
fornication brought out of the land of Egypt:  neither shalt thou lift
up thy eyes to them, nor remember Egypt any more.

23:28. For thus saith the Lord God:  Behold, I will deliver thee into
the hands of them whom thou hatest, into their hands with whom thy soul
hath been glutted.

23:29. And they shall deal with thee in hatred, and they shall take
away all thy labours, and shall let thee go naked, and full of
disgrace, and the disgrace of thy fornication shall be discovered, thy
wickedness, and thy fornications.

23:30. They have done these things to thee, because thou hast played
the harlot with the nations among which thou wast defiled with their
idols.

23:31. Thou hast walked in the way of thy sister and I will give her
cup into thy hand.

23:32. Thus saith the Lord God:  Thou shalt drink thy sister's cup, deep
and wide:  thou shalt be had in derision and scorn, which containeth
very much.

23:33. Thou shalt be filled with drunkenness, and sorrow:  with the cup
of grief and sadness, with the cup of thy sister Samaria.

23:34. And thou shalt drink it, and shalt drink it up even to the
dregs, and thou shalt devour the fragments thereof, thou shalt rend thy
breasts:  because I have spoken it, saith the Lord God.

23:35. Therefore thus saith the Lord God:  Because thou hast forgotten
me, and hast cast me off behind thy back, bear thou also thy
wickedness, and thy fornications.

23:36. And the Lord spoke to me, saying:  Son of man, dost thou judge
Oolla, and Ooliba, and dost thou declare to them their wicked deeds?

23:37. Because they have committed adultery, and blood is in their
hands, and they have committed fornication with their idols:  moreover
also their children, whom they bore to me, they have offered to them to
be devoured.

23:38. Yea, and they have done this to me.  They polluted my sanctuary
on the same day, and profaned my sabbaths.

23:39. And when they sacrificed their children to their idols, and went
into my sanctuary the same day to profane it:  they did these things
even in the midst of my house.

23:40. They sent for men coming from afar, to whom they had sent a
messenger:  and behold they came:  for whom thou didst wash thyself, and
didst paint thy eyes, and wast adorned with women's ornaments.

23:41. Thou sattest on a very fine bed, and a table was decked before
thee:  whereupon thou didst set my incense, and my ointment.

23:42. And there was in her the voice of a multitude rejoicing:  and to
some that were brought of the multitude of men, and that came from the
desert, they put bracelets on their hands, and beautiful crowns on
their heads.

23:43. And I said to her that was worn out in her adulteries:  Now will
this woman still continue in her fornication.

23:44. And they went in to her, as to a harlot:  so went they in unto
Oolla, and Ooliba, wicked women.

23:45. They therefore are just men:  these shall judge them as
adulteresses are judged, and as shedders of blood are judged:  because
they are adulteresses, and blood is in their hands.

23:46. For thus saith the Lord God:  Bring a multitude upon them, and
deliver them over to tumult and rapine:

23:47. And let the people stone them with stone, and let them be
stabbed with their swords:  they shall kill their sons and daughters,
and their houses they shall burn with fire.

23:48. And I will take away wickedness out of the land:  and all women
shall learn, not to do according to the wickedness of them.

23:49. And they shall render your wickedness upon you, and you shall
bear the sins of your idols:  and you shall know that I am the Lord God.



Ezechiel Chapter 24


Under the parable of a boiling pot is shewn the utter destruction of
Jerusalem:  for which the Jews at Babylon shall not dare to mourn.

24:1. And the word of the Lord came to me in the ninth year, in the
tenth month, the tenth day of the month, saying:

24:2. Son of man, write thee the name of this day, on which the king of
Babylon hath set himself against Jerusalem to day.

24:3. And thou shalt speak by a figure a parable to the provoking
house, and say to them:  Thus saith the Lord God:  Set on a pot, set it
on, I say, and put water in it.

24:4. Heap together into it the pieces thereof, every good piece, the
thigh and the shoulder, choice pieces and full of bones.

24:5. Take the fattest of the flock, and lay together piles of bones
under it:  the seething thereof is boiling hot, and the bones thereof
are thoroughly sodden in the midst of it.

24:6. Therefore thus saith the Lord God:  Woe to the bloody city, to the
pot whose rust is in it, and its rust is not gone out of it:  cast it
out piece by piece, there hath no lot fallen upon it.

24:7. For her blood is in the midst of her, she hath shed it upon the
smooth rock:  she hath not shed it upon the ground, that it might be
covered with dust.

24:8. And that I might bring my indignation upon her, and take my
vengeance:  I have shed her blood upon the smooth rock, that it should
not be covered.

24:9. Therefore thus saith the Lord God:  Woe to the bloody city, of
which I will make a great bonfire.

24:10. Heap together the bones, which I will burn with fire:  the flesh
shall be consumed, and the whole composition shall be sodden, and the
bones shall be consumed.

24:11. Then set it empty upon burning coals, that it may be hot, and
the brass thereof may be melted:  and let the filth of it be melted in
the midst thereof, and let the rust of it be consumed.

24:12. Great pains have been taken, and the great rust thereof is not
gone out, not even by fire.

24:13. Thy uncleanness is execrable:  because I desired to cleanse thee,
and thou art not cleansed from thy filthiness:  neither shalt thou be
cleansed, before I cause my indignation to rest in thee.

24:14. I the Lord have spoken:  it shall come to pass, and I will do it:
I will not pass by, nor spare, nor be pacified:  I will judge thee
according to thy ways, and according to thy doings, saith the Lord.

24:15. And the word of the Lord came to me, saying:

24:16. Son of man, behold I take from thee the desire of thy eyes with
a stroke, and thou shall not lament, nor weep; neither shall thy tears
run down.

24:17. Sigh in silence, make no mourning for the dead:  let the tire of
thy head be upon thee, and thy shoes on thy feet, and cover not thy
face, nor eat the meat of mourners.

24:18. So I spoke to the people in the morning, and my wife died in the
evening:  and I did in the morning as he had commanded me.

24:19. And the people said to me:  Why dost thou not tell us what these
things mean that thou doest?

24:20. And I said to them:  The word of the Lord came to me, saying:

24:21. Speak to the house of Israel:  Thus saith the Lord God:  Behold I
will profane my sanctuary, the glory of your realm, and the thing that
your eyes desire, and for which your soul feareth:  your sons, and your
daughters, whom you have left, shall fall by the sword.

24:22. And you shall do as I have done:  you shall not cover your faces,
nor shall you eat the meat of mourners.

24:23. You shall have crowns on your heads, and shoes on your feet:  you
shall not lament nor weep, but you shall pine away for your iniquities,
and every one shall sigh with his brother.

24:24. And Ezechiel shall be unto you for a sign of things to come:
according to all that he hath done, so shall you do, when this shall
come to pass:  and you shall know that I am the Lord God.

24:25. And thou, O son of man, behold in the day wherein I will take
away from them their strength, and the joy of their glory, and the
desire of their eyes, upon which their souls rest, their sons and their
daughters.

24:26. In that day when he that escapeth shall come to thee, to tell
thee:

24:27. In that day, I say, shall thy mouth be opened to him that hath
escaped, and thou shalt speak, and shalt be silent no more:  and thou
shalt be unto them for a sign of things to come, and you shall know
that I am the Lord.



Ezechiel Chapter 25


A prophecy against the Ammonites, Moabites, Edomites, and Philistines,
for their malice against the Israelites.

25:1. And the word of the Lord came to me, saying:

25:2. Son of man, set thy face against the children of Ammon, and thou
shalt prophesy of them.

25:3. And thou shalt say to the children of Ammon:  Hear ye the word of
the Lord God:  Thus saith the Lord God:  Because thou hast said:  Ha, ha,
upon my sanctuary, because it was profaned:  and upon the land of
Israel, because it was laid waste:  and upon the house of Juda, because
they are led into captivity:

25:4. Therefore will I deliver thee to the men of the east for an
inheritance, and they shall place their sheepcotes in thee, and shall
set up their tents in thee:  they shall eat thy fruits:  and they shall
drink thy milk.

25:5. And I will make Rabbath a stable for camels, and the children of
Ammon a couching place for flocks:  and you shall know that I am the
Lord.

Rabbath. . .The capital city of the Ammonites:  it was afterwards called
Philadelphia.

25:6. For thus saith the Lord God:  Because thou hast clapped thy hands
and stamped with thy foot, and hast rejoiced with all thy heart against
the land of Israel:

25:7. Therefore behold I will stretch forth my hand upon thee, and will
deliver thee to be the spoil of nations, and will cut thee off from
among the people, and destroy thee out of the lands, and break thee in
pieces:  and thou shalt know that I am the Lord.

25:8. Thus saith the Lord God:  Because Moab and Seir have said:  Behold
the house of Juda is like all other nations:

25:9. Therefore behold I will open the shoulder of Moab from the
cities, from his cities, I say, and his borders, the noble cities of
the land of Bethiesimoth, and Beelmeon, and Cariathaim,

25:10. To the people of the east with the children of Ammon, and I will
give it them for an inheritance:  that there may be no more any
remembrance of the children of Ammon among the nations.

25:11. And I will execute judgments in Moab:  and they shall know that I
am the Lord.

25:12. Thus saith the Lord God:  Because Edom hath taken vengeance to
revenge herself of the children of Juda, and hath greatly offended, and
hath sought revenge of them:

25:13. Therefore thus saith the Lord God:  I will stretch forth my hand
upon Edom, and will take away out of it man and beast, and will make it
desolate from the south:  and they that are in Dedan shall fall by the
sword.

25:14. And I will lay my vengeance upon Edom by the hand of my people
Israel:  and they shall do in Edom according to my wrath, and my fury:
and they shall know my vengeance, saith the Lord God.

25:15. Thus saith the Lord God:  Because the Philistines have taken
vengeance, and have revenged themselves with all their mind, destroying
and satisfying old enmities:

25:16. Therefore thus saith the Lord God:  Behold I will stretch forth
my hand upon the Philistines, and will kill the killers, and will
destroy the remnant of the sea coast.

25:17. And I will execute great vengeance upon them, rebuking them in
fury:  and they shall know that I am the Lord, when I shall lay my
vengeance upon them.



Ezechiel Chapter 26


A prophecy of the destruction of the famous city of Tyre by
Nabuchodonosor.

26:1. And it came to pass in the eleventh year, the first day of the
month, that the word of the Lord came to me, saying:

26:2. Son of man, because Tyre hath said of Jerusalem:  Aha, the gates
of the people are broken, she is turned to me:  I shall be filled, now
she is laid waste.

26:3. Therefore thus saith the Lord God:  Behold I come against thee, O
Tyre, and I will cause many nations to come up to thee, as the waves of
the sea rise up.

26:4. And they shall break down the walls of Tyre, and destroy the
towers thereof:  and I will scrape her dust from her, and make her like
a smooth rock.

26:5. She shall be a drying place for nets in the midst of the sea,
because I have spoken it, saith the Lord God:  and she shall be a spoil
to the nations.

26:6. Her daughters also that are in the field, shall be slain by the
sword:  and they shall know that I am the Lord.

26:7. For thus saith the Lord God:  Behold I will bring against Tyre
Nabuchodonosor king of Babylon, the king of kings, from the north, with
horses, and chariots, and horsemen, and companies, and much people.

26:8. Thy daughters that are in the field, he shall kill with the
sword:  and he shall compass thee with forts, and shall cast up a mount
round about:  and he shall lift up the buckler against thee.

26:9. And he shall set engines of war and battering rams against thy
walls, and shall destroy thy towers with his arms.

26:10. By reason of the multitude of his horses, their dust shall cover
thee:  thy walls shall shake at the noise of the horsemen, and wheels,
and chariots, when they shall go in at thy gates, as by the entrance of
a city that is destroyed.

26:11. With the hoofs of his horses he shall tread down all thy
streets, thy people he shall kill with the sword, and thy famous
statues shall fall to the ground.

26:12. They shall waste thy riches, they shall make a spoil of thy
merchandise:  and they shall destroy thy walls, and pull down thy fine
houses:  and they shall lay thy stones and thy timber, and thy dust in
the midst of the waters.

26:13. And I will make the multitude of thy songs to cease, and the
sound of thy harps shall be heard no more.

26:14. And I will make thee like a naked rock, thou shalt be a drying
place for nets, neither shalt thou be built any more:  for I have spoken
it, saith the Lord God.

26:15. Thus saith the Lord God to Tyre:  Shall not the islands shake at
the sound of thy fall, and the groans of thy slain when they shall be
killed in the midst of thee?

26:16. Then all the princes of the sea shall come down from their
thrones:  and take off their robes, and cast away their broidered
garments, and be clothed with astonishment:  they shall sit on the
ground, and with amazement shall wonder at thy sudden fall.

26:17. And taking up a lamentation over thee, they shall say to thee:
How art thou fallen, that dwellest in the sea, renowned city that wast
strong in the sea, with thy inhabitants whom all did dread?

26:18. Now shall the ships be astonished in the day of thy terror:  and
the islands in the sea shall be troubled because no one cometh out of
thee.

26:19. For thus saith the Lord God:  When I shall make thee a desolate
city like the cities that are not inhabited:  and shall bring the deep
upon thee, and many waters shall cover thee:

26:20. And when I shall bring thee down with those that descend into
the pit to the everlasting people, and shall set thee in the lowest
parts of the earth, as places desolate of old, with them that are
brought down into the pit, that thou be not inhabited:  and when I shall
give glory in the land of the living,

26:21. I will bring thee to nothing, and thou shalt not be, and if thou
be sought for, thou shalt not be found any more for ever, saith the
Lord God.



Ezechiel Chapter 27


A description of the glory and riches of Tyre:  and of her irrecoverable
fall.

27:1. And the word of the Lord came to me, saying:

27:2. Thou therefore, O son of man, take up a lamentation for Tyre:

27:3. And say to Tyre that dwelleth at the entry of the sea, being the
mart of the people for many islands:  Thus saith the Lord God:  O Tyre,
thou hast said:  I am of perfect beauty,

27:4. And situate in the heart of the sea.  Thy neighbours, that built
thee, have perfected thy beauty:

27:5. With fir trees of Sanir they have built thee with all sea planks:
they have taken cedars from Libanus to make thee masts.

Sea planks. . .That is, timber brought by sea to build the city.

27:6. They have cut thy oars out of the oaks of Basan:  and they have
made thee benches of Indian ivory and cabins with things brought from
the islands of Italy.

27:7. Fine broidered linen from Egypt was woven for thy sail, to be
spread on thy mast:  blue and purple from the islands of Elisa, were
made thy covering.

27:8. The inhabitants of Sidon, and the Arabians were thy rowers:  thy
wise men, O Tyre, were thy pilots.

27:9. The ancients of Gebal, and the wise men thereof furnished
mariners for the service of thy various furniture:  all the ships of the
sea, and their mariners were thy factors.

27:10. The Persians, and Lydians, and the Libyans were thy soldiers in
thy army:  they hung up the buckler and the helmet in thee for thy
ornament.

27:11. The men of Arad were with thy army upon thy walls round about:
the Pygmeans also that were in thy towers, hung up their quivers on thy
walls round about:  they perfected thy beauty.

Pygmeans. . .That is, strong and valiant men.  In Hebrew, Gammadim.

27:12. The Carthaginians thy merchants supplied thy fairs with a
multitude of all kinds of riches, with silver, iron, tin, and lead,

27:13. Greece, Thubal, and Mosoch, they were thy merchants, they
brought to thy people slaves and vessels of brass.

27:14. From the house of Thogorma they brought horses, and horsemen,
and mules to thy market.

27:15. The men of Dedan were thy merchants:  many islands were the
traffic of thy hand, they exchanged for thy price teeth of ivory and
ebony.

27:16. The Syrian was thy merchant:  by reason of the multitude of thy
works, they set forth precious stories, and purple, and broidered
works, and fine linen, and silk, and chodchod in thy market.

Chodchod. . .It is the Hebrew name for some precious stone; but of what
kind in particular interpreters are not agreed.

27:17. Juda and the land of Israel, they were thy merchants with the
best corn:  they set forth balm, and honey, and oil and rosin in thy
fairs.

27:18. The men of Damascus were thy merchants in the multitude of thy
works, the multitude of divers riches, in rich wine, in wool of the
best colour.

27:19. Dan, and Greece, and Mosel have set forth in thy marts wrought
iron:  stacte, and calamus were in thy market.

27:20. The men of Dedan were thy merchants in tapestry for seats.

27:21. Arabia, and all the princes of Cedar, they were the merchants of
thy hand:  thy merchants came to thee with lambs, and rams, and kids.

27:22. The sellers of Saba, and Reema, they were thy merchants:  with
all the best spices, and precious stones, and gold, which they set
forth in thy market.

27:23. Haran, and Chene, and Eden were thy merchants; Saba, Assur, and
Chelmad sold to thee.

27:24. They were thy merchants in divers manners, with bales of blue
cloth, and of embroidered work, and of precious riches, which were
wrapped up and bound with cords:  they had cedars also in thy
merchandise.

27:25. The ships of the sea, were thy chief in thy merchandise:  and
thou wast replenished, and glorified exceedingly in the heart of the
sea.

27:26. Thy rowers have brought thee into great waters:  the south wind
hath broken thee in the heart of the sea.

27:27. Thy riches, and thy treasures, and thy manifold furniture, thy
mariners, and thy pilots, who kept thy goods, and were chief over thy
people:  thy men of war also, that were in thee, with all thy multitude
that is in the midst of thee:  shall fall in the heart of the sea in the
day of thy ruin.

27:28. Thy fleets shall be troubled at the sound of the cry of thy
pilots.

27:29. And all that handled the oar shall come down from their ships:
the mariners, and all the pilots of the sea shall stand upon the land:

27:30. And they shall mourn over thee with a loud voice and shall cry
bitterly:  and they shall cast up dust upon their heads and shall be
sprinkled with ashes.

27:31. And they shall shave themselves bald for thee, and shall be
girded with haircloth:  and they shall weep for thee with bitterness of
soul, with most bitter weeping.

27:32. And they shall take up a mournful song for thee, and shall
lament thee:  What city is like Tyre, which is become silent in the
midst of the sea?

27:33. Which by thy merchandise that went from thee by sea didst fill
many people:  which by the multitude of thy riches, and of thy people
didst enrich the kings of the earth.

27:34. Now thou art destroyed by the sea, thy riches are in the bottom
of the waters, and all the multitude that was in the midst of thee is
fallen.

27:35. All the inhabitants of the islands are astonished at thee:  and
all their kings being struck with the storm have changed their
countenance.

27:36. The merchants of people have hissed at thee:  thou art brought to
nothing, and thou shalt never be any more.



Ezechiel Chapter 28


The king of Tyre, who affected to be like to God, shall fall under the
like sentence with Lucifer.  The judgment of Sidon.  The restoration of
Israel.

28:1. And the word of the Lord came to me, saying:

28:2. Son of man, say to the prince of Tyre:  Thus saith the Lord God:
Because thy heart is lifted up, and thou hast said:  I am God, and I sit
in the chair of God in the heart of the sea:  whereas thou art a man,
and not God:  and hast set thy heart as if it were the heart of God.

28:3. Behold thou art wiser than Daniel:  no secret is hid from thee.

Thou art wiser than Daniel. . .Viz., in thy own conceit.  The wisdom of
Daniel was so much celebrated in his days, that it became a proverb
amongst the Chaldeans, when any one would express an extraordinary
wisdom, to say he was as wise as Daniel.

28:4. In thy wisdom and thy understanding thou hast made thyself
strong:  and hast gotten gold an silver into thy treasures.

28:5. By the greatness of thy wisdom, and by thy traffic thou hast
increased thy strength:  and thy heart is lifted up with thy strength.

28:6. Therefore, thus saith the Lord God:  Because thy heart is lifted
up as the heart of God:

28:7. Therefore behold, I will bring upon thee strangers:  the strongest
of the nations:  and they shall draw their swords against the beauty of
thy wisdom, and they shall defile thy beauty.

28:8. They shall kill thee, and bring thee down:  and thou shalt die the
death of them that are slain in the heart of the sea.

28:9. Wilt thou yet say before them that slay thee:  I am God; whereas
thou art a man, and not God, in the hand of them that slay thee?

28:10. Thou shalt die the death of the uncircumcised by the hand of
strangers:  for I have spoken it, saith the Lord God.

28:11. And the word of the Lord came to me, saying:  Son of man, take up
a lamentation upon the king of Tyre:

28:12. And say to him:  Thus saith the Lord God:  Thou wast the seal of
resemblance, full of wisdom, and perfect in beauty.

Thou wast the seal of resemblance. . .The king of Tyre, by his dignity
and his natural perfections, bore in himself a certain resemblance to
God, by reason of which he might be called the seal of resemblance,
etc.  But what is here said to him is commonly understood of Lucifer,
the king over all the children of pride.

28:13. Thou wast in the pleasures of the paradise of God:  every
precious stone was thy covering:  the sardius, the topaz, and the
jasper, the chrysolite, and the onyx, and the beryl, the sapphire, and
the carbuncle, and the emerald:  gold the work of thy beauty:  and thy
pipes were prepared in the day that thou wast created.

28:14. Thou a cherub stretched out, and protecting, and I set thee in
the holy mountain of God, thou hast walked in the midst of the stones
of fire.

A cherub stretched out. . .That is, thy wings extended.  This alludes to
the figure of the cherubims in the sanctuary, which with stretched out
wings covered the ark.--Ibid.  The stones of fire. . .That is, bright and
precious stones which sparkle like fire.

28:15. Thou wast perfect in thy ways from the day of thy creation,
until iniquity was found in thee.

28:16. By the multitude of thy merchandise, thy inner parts were filled
with iniquity, and thou hast sinned:  and I cast thee out from the
mountain of God, and destroyed thee, O covering cherub, out of the
midst of the stones of fire.

28:17. And thy heart was lifted up with thy beauty:  thou hast lost thy
wisdom in thy beauty, I have cast thee to the ground:  I have set thee
before the face of kings, that they might behold thee.

28:18. Thou hast defiled thy sanctuaries by the multitude of thy
iniquities, and by the iniquity of thy traffic:  therefore I will bring
forth a fire from the midst of thee, to devour thee, and I will make
thee as ashes upon the earth in the sight of all that see thee.

28:19. All that shall see thee among the nations, shall be astonished
at thee:  thou art brought to nothing, and thou shalt never be any more.

28:20. And the word of the Lord came to me, saying:

28:21. Son of man, set thy face against Sidon:  and thou shalt prophesy
of it,

28:22. And shalt say:  Thus saith the Lord God:  Behold I come against
thee, Sidon, and I will be glorified in the midst of thee:  and they
shall know that I am the Lord, when I shall execute judgments in her,
and shall be sanctified in her.

28:23. And I will send into her pestilence, and blood in her streets:
and they shall fall being slain by the sword on all sides in the midst
thereof:  and they shall know that I am the Lord.

28:24. And the house of Israel shall have no more a stumblingblock of
bitterness, nor a thorn causing pain on every side round about them, of
them that are against them:  and they shall know that I am the Lord God.

28:25. Thus saith the Lord God:  When I shall have gathered together the
house of Israel out of the people among whom they are scattered:  I will
be sanctified in them before the Gentiles:  and they shall dwell in
their own land, which I gave to my servant Jacob.

28:26. And they shall dwell therein secure, and they shall build
houses, and shall plant vineyards, and shall dwell with confidence,
when I shall have executed judgments upon all that are their enemies
round about:  and they shall know that I am the Lord their God.



Ezechiel Chapter 29


The king of Egypt shall be overthrown, and his kingdom wasted:  it shall
be given to Nabuchodonosor for his service against Tyre.

29:1. In the tenth year, the tenth month, the eleventh day of the
month, the word of the Lord came to me, saying:

29:2. Son of man, set thy face against Pharao king of Egypt:  and thou
shalt prophesy of him, and of all Egypt:

29:3. Speak, and say:  Thus saith the Lord God:  Behold, I come against
thee, Pharao king of Egypt, thou great dragon that liest in the midst
of thy rivers, and sayest:  The river is mine, and I made myself.

29:4. But I will put a bridle in thy jaws:  and I will cause the fish of
thy rivers to stick to thy scales:  and I will draw thee out of the
midst of thy rivers, and all thy fish shall stick to thy scales.

29:5. And I will cast thee forth into the desert, and all the fish of
thy river:  thou shalt fall upon the face of the earth, thou shalt not
be taken up, nor gathered together:  I have given thee for meat to the
beasts of the earth, and to the fowls of the air.

29:6. And all the inhabitants of Egypt shall know that I am the Lord:
because thou hast been a staff of a reed to the house of Israel.

29:7. When they took hold of thee with the hand thou didst break, and
rent all their shoulder:  and when they leaned upon thee, thou brokest,
and weakenest all their loins.

29:8. Therefore thus saith the Lord God:  Behold, I will bring the sword
upon thee:  and cut off man and beast out of thee.

29:9. And the land of Egypt shall become a desert, and a wilderness:
and they shall know that I am the Lord, because thou hast said:  The
river is mine, and I made it.

29:10. Therefore, behold I come against thee, and thy rivers:  and I
will make the land of Egypt utterly desolate, and wasted by the sword,
from the tower of Syene, even to the borders of Ethiopia.

29:11. The foot of man shall not pass through it, neither shall the
foot of beasts go through it:  nor shall it be inhabited during forty
years.

29:12. And I will make the land of Egypt desolate in the midst of the
lands that are desolate, and the cities thereof in the midst of the
cites that are destroyed, and they shall be desolate for forty years:
and I will scatter the Egyptians among the nations, and will disperse
them through the countries.

29:13. For thus saith the Lord God:  At the end of forty years I will
gather the Egyptians from the people among whom they had been
scattered.

29:14. And I will bring back the captivity of Egypt, and will place
them in the land of Phatures, in the land of their nativity, and they
shall be there a low kingdom:

29:15. It shall be the lowest among other kingdoms, and it shall no
more be exalted over the nations, and I will diminish them that they
shall rule no more over the nations.

29:16. And they shall be no more a confidence to the house of Israel,
teaching iniquity, that they may flee, and follow them:  and they shall
know that I am the Lord God.

29:17. And it came to pass in the seven and twentieth year in the first
month, in the first of the month:  that the word of the Lord came to me,
saying:

29:18. Son of man, Nabuchodonosor king of Babylon hath made his army to
undergo hard service against Tyre:  every head was made bald, and every
shoulder was peeled and there hath been no reward given him, nor his
army for Tyre, for the service that he rendered me against it.

29:19. Therefore thus saith the Lord God:  Behold, I will set
Nabuchodonosor the king of Babylon in the land of Egypt:  and he shall
take her multitude, and take the booty thereof for a prey, and rifle
the spoils thereof:  and it shall be wages for his army.

29:20. And for the service that he hath done me against it:  I have
given him the land of Egypt, because he hath laboured for me, saith the
Lord God.

29:21. In that day a horn shall bud forth to the house of Israel, and I
will give thee an open mouth in the midst of them:  and they shall know
that I am the Lord.



Ezechiel Chapter 30


The desolation of Egypt and her helpers:  all her cities shall be
wasted.

30:1. And the word of the Lord came to me, saying:

30:2. Son of man prophesy, and say:  Thus saith the Lord God:  Howl ye,
Woe, woe to the day:

30:3. For the day is near, yea the day of the Lord is near:  a cloudy
day, it shall be the time of the nations.

30:4. And the sword shall come upon Egypt:  and there shall be dread in
Ethiopia, when the wounded shall fall in Egypt, and the multitude
thereof shall be taken away, and the foundations thereof shall be
destroyed.

30:5. Ethiopia, and Libya, and Lydia, and all the rest of the crowd,
and Chub, and the children of the land of the covenant, shall fall with
them by the sword.

30:6. Thus saith the Lord God:  They also that uphold Egypt shall fall,
and the pride of her empire shall be brought down:  from the tower of
Syene shall they fall in it by the sword, saith the Lord the God of
hosts.

30:7. And they shall be desolate in the midst of the lands that are
desolate, and the cities thereof shall be in the midst of the cities
that are wasted.

30:8. And they shall know that I am the Lord:  when I shall have set a
fire in Egypt, and all the helpers thereof shall be destroyed.

30:9. In that day shall messengers go forth from my face in ships to
destroy the confidence of Ethiopia, and there shall be dread among them
in the day of Egypt:  because it shall certainly come.

30:10. Thus saith the Lord God:  I will make the multitude of Egypt to
cease by the hand of Nabuchodonosor the king of Babylon.

30:11. He and his people with him, the strongest of nations, shall be
brought to destroy the land:  and they shall draw their swords upon
Egypt:  and shall fill the land with the slain.

30:12. And I will make the channels of the rivers dry, and will deliver
the land into the hand of the wicked:  and will lay waste the land and
all that is therein by the hands of strangers, I the Lord have spoken
it.

30:13. Thus saith the Lord God:  I will also destroy the idols, and I
will make an end of the idols of Memphis:  and there shall:  be no more a
prince of the land of Egypt and I will cause a terror in the land of
Egypt.

30:14. And I will destroy the land of Phatures, and will make a fire in
Taphnis, and will execute judgments in Alexandria.

Alexandria. . .In the Hebrew, No:  which was the ancient name of that
city, which was afterwards rebuilt by Alexander the Great, and from his
name called Alexandria.

30:15. And I will pour out my indignation upon Pelusium the strength of
Egypt, and will cut off the multitude of Alexandria.

30:16. And I will make a fire in Egypt:  Pelusium shall be in pain like
a woman in labour, and Alexandria shall be laid waste, and in Memphis
there shall be daily distresses.

30:17. The young men of Heliopolis, and of Bubastus shall fall by the
sword, and they themselves shall go into captivity.

30:18. And in Taphnis the day shall be darkened, when I shall break
there the sceptres of Egypt, and the pride of her power shall cease in
her:  a cloud shall cover her, and her daughters shall be led into
captivity.

30:19. And I will execute judgments in Egypt:  and they shall know that
I am the Lord.

30:20. And it came to pass in the eleventh year, in the first month, in
the seventh day of the month, that the word of the Lord came, me,
saying:

30:21. Son of man, I have broken the arm of Pharao king of Egypt:  and
behold it is not bound up, to be healed, to be tied up with clothes,
and swathed with linen, that it might recover strength, and hold the
sword.

30:22. Therefore, thus saith the Lord God:  Behold, I come against
Pharao king of Egypt, and I will break into pieces his strong arm,
which is already broken:  and I will cause the sword to fall out of his
hand:

30:23. And I will disperse Egypt among the nations, and scatter them
through the countries.

30:24. And I will strengthen the arms of the king of Babylon, and will
put my sword in his hand:  and I will break the arms of Pharao, and they
shall groan bitterly being slain before his face.

30:25. And I will strengthen the arms of the king of Babylon, and the
arms of Pharao shall fall:  and they shall know that I am the Lord, when
I shall have given my sword into the hand of the king of Babylon, and
he shall have stretched it forth upon the land of Egypt.

30:26. And I will disperse Egypt among the nations, and will scatter
them through the countries, and they shall know that I am the Lord.



Ezechiel Chapter 31


The Assyrian empire fell for their pride:  the Egyptian shall fall in
like manner.

31:1. And it came to pass, in the eleventh year, the third month the
first day of the month, that the word of the Lord came to me, saying:

31:2. Son of man, speak to Pharao king of Egypt, and to his people:  To
whom art thou like in thy greatness?

31:3. Behold, the Assyrian like a cedar in Libanus, with fair branches,
and full of leaves, of a high stature, and his top was elevated among
the thick boughs.

31:4. The waters nourished him, the deep set him tip on high, the
streams thereof ran round about his roots, and it sent, forth its
rivulets to all the trees of the country.

31:5. Therefore was his height exalted above all the trees of the
country and his branches were multiplied, and his boughs were elevated
because of many waters.

31:6. And when he had spread forth his shadow, all the fowls of the air
made their nests in his boughs, and all the beasts of the forest
brought forth their young under his branches, and the assembly of many
nations dwelt under his shadow.

31:7. And he was most beautiful for his greatness, and for the
spreading of his branches:  for his root was near great waters.

31:8. The cedars in the paradise of God were not higher than he, the
fir trees did not equal his top, neither were the plane trees to be
compared with him for branches:  no tree in the paradise of God was like
him in his beauty.

31:9. For I made him beautiful and thick set with many branches:  and
all the trees of pleasure, that were in the paradise of God, envied
him.

31:10. Therefore thus saith the Lord God:  Because he was exalted in
height, and shot up his top green and thick, and his heart was lifted
up in his height:

31:11. I have delivered him into the hands of the mighty one of the
nations, he shall deal with him:  I have cast him out according to his
wickedness.

I have delivered. . .Here the time past is put for the future, i.  e., I
shall deliver.--Ibid.  The mighty one, etc. . .Viz., Nabuchodonosor, who
conquered both the Assyrians and Egyptians.

31:12. And strangers, and the most cruel of the nations shall cut him
down, and cast him away upon the mountains, and his boughs shall fall
in every valley, and his branches shall be broken on every rock of the
country:  and all the people of the earth shall depart from his shadow,
and leave him.

31:13. All the fowls of the air dwelt upon his ruins, and all the
beasts of the field were among his branches.

31:14. For which cause none of the trees by the waters shall exalt
themselves for their height:  nor shoot up their tops among the thick
branches and leaves, neither shall any of them that are watered stand
up in their height:  for they are all delivered unto death to the lowest
parts of the earth, in the midst of the children of men, with them that
go down into the pit.

31:15. Thus saith the Lord God:  In the day when he went down to hell, I
brought in mourning, I covered him with the deep:  and I withheld its
rivers, and restrained the many waters:  Libanus grieved for him, and
all the trees of the field trembled.

31:16. I shook the nations with the sound of his fall, when I brought
him down to hell with them that descend into the pit:  and all the trees
of pleasure, the choice and best in Libanus, all that were moistened
with waters, were comforted in the lowest parts of the earth.

31:17. For they also shall go down with him to hell to them that are
slain by the sword; and the arm of every one shall sit down under his
shadow in the midst of the nations.

31:18. To whom art thou like, O thou that art famous and lofty among
the trees of pleasure?  Behold, thou art brought down with the trees of
pleasure to the lowest parts of the earth:  thou shalt sleep in the
midst of the uncircumcised, with them that are slain by the sword:  this
is Pharao, and all his multitude, saith the Lord God.



Ezechiel Chapter 32


The prophet's lamentation for the king of Egypt.

32:1. And it came to pass in the twelfth year, in the twelfth month, in
the first day of the month, that the word of the Lord came to me,
saying:

32:2. Son of man, take up a lamentation for Pharao the king of Egypt,
and say to him:  Thou art like the lion of the nations, and the dragon
that is in the sea:  and thou didst push with the horn in thy rivers,
and didst trouble the waters with thy feet, and didst trample upon
their streams.

32:3. Therefore, thus saith the Lord God:  I will spread out my net over
thee with the multitude of many people, and I will draw thee up in my
net.

32:4. And I will throw thee out on the land, I will cast thee away into
the open field and I will cause all the fowls of the air to dwell upon
thee, and I will fill the beasts of all the earth with thee.

32:5. And I will lay thy flesh upon the mountains, and will fill thy
hills with thy corruption,

32:6. And I will water the earth with thy stinking blood upon the
mountains, and the valleys shall be filled with thee.

32:7. And I will cover the heavens, when thou shalt be put out, and I
will make the stars thereof dark:  I will cover the sun with a cloud,
and the moon shall not give her light.

32:8. I will make all the lights of heaven to mourn over thee and I
will cause darkness upon thy land, saith the Lord God, when thy wounded
shall fall in the midst of the land, saith the Lord God.

32:9. And I shall provoke to anger the heart of many people, when I
shall have brought in thy destruction among the nations upon the lands,
which thou knowest not.

32:10. And I will make many people to be amazed at thee, and their
kings shall be horribly afraid for thee, when my sword shall begin to
fly upon their faces:  and they shall be astonished on a sudden, every
one for his own life, in the day of their ruin.

32:11. For thus saith the Lord God:  The sword of the king of Babylon
shall come upon thee,

32:12. By the swords of the mighty I will overthrow thy multitude:  all
these nations are invincible:  and they shall waste the pride of Egypt,
and the multitude thereof shall be destroyed.

32:13. I will destroy also all the beasts thereof that were beside the
great waters:  and the foot of man shall trouble them no more, neither
shall the hoof of beasts trouble them.

32:14. Then will I make their waters clear, and cause their rivers to
run like oil, saith the Lord God:

32:15. When I shall have made the land of Egypt desolate:  and the land
shall be destitute of her fulness, when I shall have struck all the
inhabitants thereof and they shall know that I am the Lord.

32:16. This is the lamentation, and they shall lament therewith:  the
daughters of the nations shall lament therewith for Egypt, and for the
multitude thereof they shall lament therewith, saith the Lord God.

32:17. And it came to pass in the twelfth year, in the fifteenth day of
the month, that the word of the Lord came to me saying:

32:18. Son of man, sing a mournful song for the multitude of Egypt:  and
cast her down, both her, and the daughters of the mighty nations to the
lowest part of the earth, with them that go down into the pit.

32:19. Whom dost thou excel in beauty?  go down and sleep with the
uncircumcised.

32:20. They shall fall in the midst of them that are slain with the
sword:  the sword is given, they have drawn her down, and all her
people.

32:21. The most mighty among the strong ones shall speak to him from
the midst of hell, they that went down with his helpers and slept
uncircumcised, slain by the sword.

32:22. Assur is there, and all his multitude:  their graves are round
about him, all of them slain, and that fell by the sword.

32:23. Whose graves are set in the lowest parts of the pit:  and his
multitude lay round about his grave:  all of them slain, and fallen by
the sword, they that heretofore spread terror in the land of the
living.

32:24. There is Elam and all his multitude round about his grave, all
of them slain, and fallen by the sword; that went down uncircumcised to
the lowest parts of the earth:  that caused their terror in the land of
the living, and they have borne their shame with them that go down into
the pit.

32:25. In the midst of the slain they have set him a bed among all his
people:  their graves are round about him:  all these are uncircumcised,
and slain by the sword:  for they spread their terror in the land of the
living, and have borne their shame with them that descend into the pit:
they are laid in the midst of the slain.

32:26. There is Mosoch, and Thubal, and all their multitude:  their
graves are round about him:  all of them uncircumcised and slain, and
fallen by the sword:  though they spread their terror in the land of the
living.

32:27. And they shall not sleep with the brave, and with them that fell
uncircumcised, that went down to hell with their weapons, and laid
their swords under their heads, and their iniquities were in their
bones, because they were the terror of the mighty in the land of the
living.

32:28. So thou also shalt be broken in the midst of the uncircumcised,
and shalt sleep with them that are slain by the sword.

32:29. There is Edom, and her kings, and all her princes, who with
their army are joined with them that are slain by the sword:  and have
slept with the uncircumcised, and with them that go down into the pit.

32:30. There are all the princes of the north, and all the hunters:  who
were brought down with the slain, fearing, and confounded in their
strength:  who slept uncircumcised with them that are slain by the
sword, and have borne their shame with them that go down into the pit.

32:31. Pharao saw them, and he was comforted concerning all his
multitude, which was slain by the sword:  Pharao, and all his army,
saith the Lord God:

32:32. Because I have spread my terror in the land of the living, and
he hath slept in the midst of the uncircumcised with them that are
slain by the sword:  Pharao and all his multitude, saith the Lord God.



Ezechiel Chapter 33


The duty of the watchman appointed by God:  the justice of God's ways:
his judgments upon the Jews.

33:1. And the word of the Lord came to me, saying:

33:2. Son of man, speak to the children of thy people, and say to them:
When I bring the sword upon a land, if the people of the land take a
man, one of their meanest, and make him a watchman over them:

33:3. And he sees the sword coming upon the land, and sound the
trumpet, and tell the people:

33:4. Then he that heareth the sound of the trumpet, whosoever he be,
and doth not look to himself, if the sword come, and cut him off:  his
blood shall be upon his own head.

33:5. He heard the sound of the trumpet, and did not look to himself,
his blood shall be upon him:  but if he look to himself, he shall save
his life.

33:6. And if the watchman see the sword coming, and sound not the
trumpet:  and the people look not to themselves, and the sword come, and
cut off a soul from among them:  he indeed is taken away in his
iniquity, but I will require his blood at the hand of the watchman.

33:7. So thou, O son of man, I have made thee a watchman to the house
of Israel:  therefore thou shalt hear the word from my mouth, and shalt
tell it them from me.

33:8. When I say to the wicked:  O wicked man, thou shalt surely die:  if
thou dost not speak to warn the wicked man from his way:  that wicked
man shall die in his iniquity, but I will require his blood at thy
hand.

33:9. But if thou tell the wicked man, that he may be converted from
his ways, and he be not converted from his way he shall die in his
iniquity:  but thou hast delivered thy soul.

33:10. Thou therefore, O son of man, say to the house of Israel:  Thus
you have spoken, saying:  Our iniquities, and our sins are upon us, and
we pine away in them:  how then can we live?

33:11. Say to them:  As I live, saith the Lord God, I desire not the
death of the wicked, but that the wicked turn from his way, and live.
Turn ye, turn ye from your evil ways:  and why will you die, O house of
Israel?

33:12. Thou therefore, O son of man, say to the children of thy people:
The justice of the just shall not deliver him, in what day soever he
shall sin:  and the wickedness of the wicked shall not hurt him, in what
day soever he shall turn from his wickedness:  and the just shall not be
able to live in his justice, in what day soever he shall sin.

33:13. Yea, if I shall say to the just that he shall surely live, and
he, trusting in his justice, commit iniquity:  all his justices shall be
forgotten, and his iniquity, which he hath committed, in the same shall
he die.

33:14. And it I shall say to the wicked:  Thou shalt surely die:  and he
do penance for his sin, and do judgment and justice,

33:15. And if that wicked man restore the pledge, and render what he
had robbed, and walk in the commandments of life, and do no unjust
thing:  he shall surely live, and shall not die.

33:16. None of his sins, which he hath committed, shall be imputed to
him:  he hath done judgment and justice, he shall surely live.

33:17. And the children of thy people have said:  The way of the Lord is
not equitable:  whereas their own way is unjust.

33:18. For when the just shall depart from his justice, and commit
iniquities, he shall die in them.

33:19. And when the wicked shall depart from his wickedness, and shall
do judgments, and justice, he shall live in them.

33:20. And you say:  The way of the Lord is not right, I will judge
every one of you according to his ways, O house of Israel.

33:21. And it came to pass in the twelfth year of our captivity, in the
tenth month, in the fifth day of the month, that there came to me one
that was fled from Jerusalem, saying:  The city is laid waste.

33:22. And the hand of the Lord had been upon me in the evening, before
he that was fled came:  and he opened my mouth till he came to me in the
morning, and my mouth being opened, I was silent no more.

33:23. And the word of the Lord came to me, saying:

33:24. Son of man, they that dwell in these ruinous places in the land
of Israel, speak, saying:  Abraham was one, and he inherited the land,
but we are many, the land is given us in possession.

33:25. Therefore say to them:  Thus saith the Lord God:  You that eat
with the blood and lift up your eyes to your uncleannesses, and that
shed blood:  shall you possess the land by inheritance?

33:26. You stood on your swords, you have committed abominations, and
every one hath defiled his neighbours wife; and shall you possess the
land by inheritance?

33:27. Say thou thus to them:  Thus saith the Lord God:  As I live, they
that dwell in the ruinous places, shall fall by the sword:  and he that
is in the field, shall be given to the beasts to be devoured:  and they
that are in holds, and caves, shall die of the pestilence.

33:28. And I will make the land a wilderness, and a desert, and the
proud strength thereof shall fail, and the mountains of Israel shall be
desolate, because there is none to pass by them,

33:29. And they shall know that I am the Lord, when I shall have made
their land waste and desolate, for all their abominations which they
have committed.

33:30. And thou son of man:  the children of thy people, that talk of
thee by the walls, and in the doors of the houses, and speak one to
another each man to his neighbour, saying:  Come, and let us hear what
is the word that cometh forth from the Lord.

33:31. And they come to thee, as if people were coming in, and my
people sit before thee:  and hear thy words, and do them not:  for they
turn them into a song of their mouth, and their heart goeth after their
covetousness.

33:32. And thou art to them as a musical song which is sung with a
sweet and agreeable voice:  and they hear thy words, and do them not.

33:33. And when that which was foretold shall come to pass, for behold
it is coming, then shall they know that a prophet hath been among them.



Ezechiel Chapter 34


Evil pastors are reproved.  Christ the true pastor shall come, and
gather together his flock from all parts of the earth, and preserve it
for ever.

34:1. And the word of the Lord came to me, it saying:

34:2. Son of man, prophesy concerning the shepherds of Israel:
prophesy, and say to the shepherds:  Thus saith the Lord God:  Woe to the
shepherds of Israel, that fed themselves:  should not the flocks be fed
by the shepherds?

Shepherds. . .That is, princes, magistrates, chief priests, and scribes.

34:3. You ate the milk, and you clothed yourselves with the wool, and
you killed that which was fat:  but my flock you did not feed.

34:4. The weak you have not strengthened, and that which was sick you
have not healed, that which was broken you have not bound up, and that
which was driven away you have not brought again, neither have you
sought that which was lost:  but you ruled over them with rigour, and
with a high hand.

34:5. And my sheep were scattered, because there was no shepherd and
they became the prey of all the beasts of the field, and were
scattered.

34:6. My sheep have wandered in every mountain, and in every high hill:
and my flocks were scattered upon the face of the earth, and there was
none that sought them, there was none, I say, that sought them.

34:7. Therefore, ye shepherds, hear the word of the Lord:

34:8. As I live, saith the Lord God, forasmuch as my flocks have been
made a spoil, and my sheep are become a prey to all the beasts of the
field, because there was no shepherd:  for my shepherds did not seek
after my flock, but the shepherds fed themselves, and fed not my
flocks:

34:9. Therefore, ye shepherds, hear the word of the Lord:

34:10. Thus saith the Lord God:  Behold I myself come upon the
shepherds, I will require my flock at their hand, and I will cause them
to cease from feeding the flock any more, neither shall the shepherds
feed themselves any more:  and I will deliver my flock from their mouth,
and it shall no more be meat for them.

34:11. For thus saith the Lord God:  Behold I myself will seek my sheep,
and will visit them.

34:12. As the shepherd visiteth his flock in the day when he shall be
in the midst of his sheep that were scattered, so will I visit my
sheep, and will deliver them out of all the places where they have been
scattered in the cloudy and dark day.

34:13. And I will bring them out from the peoples, and will gather them
out of the countries, and will bring them to their own land:  and I will
feed them in the mountains of Israel, by the rivers, and in all the
habitations of the land.

34:14. I will feed them in the most fruitful pastures, and their
pastures shall be in the high mountains of Israel:  there shall they
rest on the green grass, and be fed in fat pastures upon the mountains
of Israel.

34:15. I will feed my sheep:  and I will cause them to lie down, saith
the Lord God.

34:16. I will seek that which was lost:  and that which was driven away,
I will bring again:  and I will bind up that which was broken, and I
will strengthen that which was weak, and that which was fat and strong
I will preserve, and I will feed them in judgment.

34:17. And as for you, O my flocks, thus saith the Lord God:  Behold I
judge between cattle and cattle, of rams and of he goats.

34:18. Was it not enough for you to feed upon good pastures?  but you
must also tread down with your feet the residue of your pastures:  and
when you drank the clearest water, you troubled the rest with your
feet.

34:19. And my sheep were fed with that which you had trodden with your
feet:  and they drank what your feet had troubled.

34:20. Therefore thus saith the Lord God to you:  Behold, I myself will
judge between the fat cattle and the lean.

34:21. Because you thrusted with sides and shoulders, and struck all
the weak cattle with your horns, till they were scattered abroad:

34:22. I will save my flock, and it shall be no more a spoil, and I
will judge between cattle and cattle.

34:23. And I WILL SET UP ONE SHEPHERD OVER THEM, and he shall feed
them, even my servant David:  he shall feed them, and he shall be their
shepherd.

David. . .Christ, who is of the house of David.

34:24. And I the Lord will be their God:  and my servant David the
prince in the midst of them:  I the Lord have spoken it.

34:25. And I will make a covenant of peace with them, and will cause
the evil beasts to cease out of the land:  and they that dwell in the
wilderness shall sleep secure in the forests.

34:26. And I will make them a blessing round about my hill:  and I will
send down the rain in its season, there shall be showers of blessing.

34:27. And the tree of the field shall yield its fruit, and the earth
shall yield her increase, and they shall be in their land without fear:
and they shall know that I am the Lord, when I shall have broken the
bonds of their yoke, and shall have delivered them out of the hand of
those that rule over them.

34:28. And they shall be no more for a spoil to the nations, neither
shall the beasts of the earth devour them:  but they shall dwell
securely without, any terror.

34:29. And I will raise up for them a bud of renown:  and they shall be
no more consumed with famine in the land, neither shall they bear any
more the reproach of the Gentiles.

A bud of renown. . .Germen nominatum.  He speaks of Christ our Lord, the
illustrious bud of the house of David, renowned over all the earth.  See
Jer. 33.15.

34:30. And they shall know that I the Lord their God am with them, and
that they are my people the house of Israel:  saith the Lord God.

34:31. And you my flocks, the flocks of my pasture are men:  and I am
the Lord your God, saith the Lord God.



Ezechiel Chapter 35


The judgment of mount Seir, for their hatred of Israel.

35:1. And the word of the Lord came to me, saying:

35:2. Son of man, set thy face against mount Seir, and prophesy
concerning it, and say to it:

35:3. Thus saith the Lord God:  Behold I come against thee, mount Seir,
and I will stretch forth my hand upon thee, and I will make thee
desolate and waste.

35:4. I will destroy thy cities, and thou shalt be desolate:  and thou
shalt know that I am the Lord.

35:5. Because thou hast been an everlasting enemy, and hast shut up the
children of Israel in the hands of the sword in the time of their
affliction, in the time of their last iniquity.

35:6. Therefore as I live, saith the Lord God, I will deliver thee up
to blood, and blood shall pursue thee:  and whereas thou hast hated
blood, blood shall pursue thee.

35:7. And I will make mount Seir waste and desolate:  and I will take
away from it him that goeth and him that returneth.

35:8. And I will fill his mountains with his men that are slain:  in thy
hills, and in thy valleys, and in thy torrents they shall fall that are
slain with the sword.

35:9. I will make thee everlasting desolations, and thy cities shall
not be inhabited:  and thou shalt know that I am the Lord God.

35:10. Because thou hast said:  The two nations, and the two lands shall
be mine, and I will possess them by inheritance:  whereas the Lord was
there.

35:11. Therefore as I live, saith the Lord God, I will do according to
thy wrath, and according to thy envy, which thou hast exercised in
hatred to them:  and I will be made known by them, when I shall have
judged thee.

35:12. And thou shalt know that I the Lord have heard all thy
reproaches, that thou hast spoken against the mountains of Israel,
saying.  They are desolate, they are given to us to consume.

35:13. And you rose up against me with your mouth, and have derogated
from me by your words:  I have heard them.

35:14. Thus saith the Lord God:  When the whole earth shall rejoice, I
will make thee a wilderness.

35:15. As thou hast rejoiced over the inheritance of the house of
Israel, because it was laid waste, so will I do to thee:  thou shalt be
laid waste, O mount Seir, and all Idumea:  and they shall know that I am
the Lord.



Ezechiel Chapter 36


The restoration of Israel, not for their merits, but by God's special
grace.  Christ's baptism.

36:1. And thou son of man, prophesy to the mountains of Israel, and
say:  Ye mountains of Israel, hear the word of the Lord:

36:2. Thus saith the Lord God:  Because the enemy hath said to you:  Aha,
the everlasting heights are given to us for an inheritance.

36:3. Therefore prophesy, and say:  Thus saith the Lord God:  Because you
have been desolate, and trodden under foot on every side, and made an
inheritance to the rest of the nations, and are become the subject of
the talk, and the reproach of the people:

36:4. Therefore, ye mountains of Israel, hear the word of the Lord God:
Thus saith the Lord God to the mountains, and to the hills, to the
brooks, and to the valleys, and to desolate places, and ruinous walls,
and to the cities that are forsaken, that are spoiled, and derided by
the rest of the nations round about.

36:5. Therefore thus saith the Lord God:  In the fire of my zeal I have
spoken of the rest of the nations, and of all Edom, who have taken my
land to themselves, for an inheritance with joy, and with all the
heart, and with the mind:  and have cast it out to lay it waste.

36:6. Prophesy therefore concerning the land of Israel, and say to the
mountains, and to the hills, to the ridges, and to the valleys:  Thus
saith the Lord God:  Behold I have spoken in my zeal, and in my
indignation, because you have borne the shame of the Gentiles.

36:7. Therefore thus saith the Lord God:  I have lifted up my hand, that
the Gentiles who are round about you, shall themselves bear their
shame.

36:8. But as for you, O mountains of Israel, shoot ye forth your
branches, and yield your fruit to my people of Israel:  for they are at
hand to come.

36:9. For I, I am for you, and I will turn to you, and you shall be
ploughed and sown.

36:10. And I will multiply men upon you, and all the house of Israel:
and the cities ball be inhabited, and the ruinous places shall be
repaired.

36:11. And I will make you abound with men and with beasts:  and they
shall be multiplied, and increased:  and I will settle you as from the
beginning, and will give you greater gifts, than you had from the
beginning:  and you shall know that I am the Lord.

36:12. And I will bring men upon you, my people Israel, and they shall
possess thee for their inheritance:  and thou shalt be their
inheritance, and shalt no more henceforth be without them.

36:13. Thus saith the Lord God:  Because thy say of you:  Thou art a
devourer of men, and one that suffocatest thy nation:

36:14. Therefore thou shalt devour men no more nor destroy thy nation
any more, saith the Lord God.

36:15. Neither will I cause men to hear in thee the shame of the
nations any more, nor shalt thou bear the reproach of the people, nor
lose thy nation any more, saith the Lord God.

Nor lose thy nation any more. . .This whole promise principally relates
to the church of Christ, and God's perpetual protection of her:  for as
the carnal Jews, they have been removed out of their land these sixteen
hundred years.

36:16. And the word of the Lord came to me, saying:

36:17. Son of man, when the house of Israel dwelt in their own land,
they defiled it with their ways, and with their doings:  their way was
before me like the uncleanness of a menstruous woman.

36:18. And I poured out my indignation upon them for the blood which
they had shed upon the land, and with their idols they defiled it.

36:19. And I scattered them among the nations, and they are dispersed
through the countries:  I have judged them according to their ways, and
their devices.

36:20. And when they entered among the nations whither they went, they
profaned my holy name, when it was said of them:  This is the people of
the Lord, and they are come forth out of his land.

36:21. And I have regarded my own holy name, which the house of Israel
hath profaned among the nations to which they went in.

36:22. Therefore thou shalt say to the house of Israel:  Thus saith the
Lord God:  It is not for your sake that I will do this, O house of
Israel, but for my holy name's sake, which you have profaned among the
nations whither you went.

36:23. And I will sanctify my great name, which was profaned among the
Gentiles, which you have profaned in the midst of them:  that the
Gentiles may know that I am the Lord, saith the Lord of hosts, when I
shall be sanctified in you before their eyes.

36:24. For I will take you from among the Gentiles, and will gather you
together out of all the countries, and will bring you into your own
land.

36:25. And I will pour upon you clean water, and you shall be cleansed
from all your filthiness, and I will cleanse you from all your idols.

36:26. And I will give you a new heart, and put a new spirit within
you:  and I will take away the stony heart out of your flesh, and will
give you a heart of flesh.

36:27. And I will put my spirit in the midst of you:  and I will cause
you to walk in my commandments, and to keep my judgments, and do them.

36:28. And you shall dwell in the land which I gave to your fathers,
and you shall be my people, and I will be your God.

36:29. And I will save you from all your uncleannesses:  and I will call
for corn, and will multiply it, and will lay no famine upon you.

36:30. And I will multiply the fruit of the tree, and the increase of
the field, that you bear no more the reproach of famine among the
nations.

36:31. And you shall remember your wicked ways, and your doings that
were not good:  and your iniquities, and your wicked deeds shall
displease you.

36:32. It is not for your sakes that I will do this, saith the Lord
God, be it known to you:  be confounded, and ashamed at your own ways, O
house of Israel.

36:33. Thus saith the Lord God:  In the day that I shall cleanse you
from all your iniquities, and shall cause the cities to be inhabited,
and shall repair the ruinous places,

36:34. And the desolate land shall be tilled, which before was waste in
the sight of all that passed by,

36:35. They shall say:  This land that was untilled is become as a
garden of pleasure:  and the cities that were abandoned, and desolate,
and destroyed, are peopled and fenced.

36:36. And the nations, that shall be left round about you, shall know
that I the Lord have built up what was destroyed, and planted what was
desolate, that I the Lord have spoken and done it.

36:37. Thus saith the Lord God:  Moreover in this shall the house of
Israel find me, that I will do it for them:  I will multiply them as a
flock of men,

36:38. As a holy flock, as the flock of Jerusalem in her solemn feasts:
so shall the waste cities be full of flocks of men:  and they shall know
that I am the Lord.



Ezechiel Chapter 37


A vision of the resurrection of dry bones, foreshewing the deliverance
of the people from their captivity.  Juda and Israel shall be all one
kingdom under Christ.  God's everlasting covenant with the church.

37:1. The hand of the Lord was upon me, and brought me forth in the
spirit of the Lord:  and set me down in the midst of a plain that was
full of bones.

37:2. And he led me about through them on every side:  now they were
very many upon the face of the plain, and they were exceeding dry.

37:3. And he said to me:  Son of man, dost thou think these bones shall
live and I answered:  O Lord God, thou knowest.

37:4. And he said to me:  Prophesy concerning these bones; and say to
them:  Ye dry bones, hear the word of the Lord.

37:5. Thus saith the Lord God to these bones:  Behold, I will send
spirit into you, and you shall live.

Spirit. . .That is, soul, life, and breath.

37:6. And I will lay sinews upon you, and will cause flesh to grow over
you, and will cover you with skin:  and I will give you spirit and you
shall live, and you shall know that I am the Lord.

37:7. And I prophesied as he had commanded me:  and as I prophesied
there was a noise, and behold a commotion:  and the bones came together,
each one, its joint.

37:8. And I saw, and behold the sinews, and the flesh came up upon
them:  and the skin was stretched out over them, but there was no spirit
in them.

37:9. And he said to me:  Prophesy to the spirit, prophesy, O son of
man, and say to the spirit:  Thus saith the Lord God:  Come, spirit, from
the four winds, and blow upon these slain, and let them live again.

37:10. And I prophesied as he had commanded me:  and the spirit came
into them, and they lived:  and they stood up upon their feet, an
exceeding great army.

37:11. And he said to me:  Son of man:  All these bones are the house of
Israel:  they say:  Our bones are dried up, and our hope is lost, and we
are cut off.

37:12. Therefore prophesy, and say to them:  Thus saith the Lord God:
Behold I will open your graves, and will bring you out of your
sepulchres, O my people:  and will bring you into the land of Israel.

37:13. And you shall know that I am the Lord, when I shall have opened
your sepulchres, and shall have brought you out of your graves, O my
people:

37:14. And shall have put my spirit in you, and you shall live, and I
shall make you rest upon your own land:  and you shall know that I the
Lord have spoken, and done it, saith the Lord God:

37:15. And the word of the Lord came to me, saying:

37:16. And thou son of man, take thee a stick:  and write upon it:  Of
Juda, and of the children of Israel his associates:  and take another
stick and write upon it:  For Joseph the stick of Ephraim, and for all
the house of Israel, and of his associates.

37:17. And join them one to the other into one stick, and they shall
become one in thy hand.

37:18. And when the children of thy people shall speak to thee, saying:
Wilt thou not tell us what thou meanest by this?

37:19. Say to them:  Thus saith the Lord God:  Behold, I will take the
stick of Joseph, which is in the hand of Ephraim, and the tribes of
Israel that are associated with him, and I will put them together with
the stick of Juda, and will make them one stick:  and they shall be one
in his hand.

37:20. And the sticks whereon thou hast written, shall be in thy hand,
before their eyes.

37:21. And thou shalt say to them:  Thus saith the Lord God:  Behold, I
will take of the children of Israel from the midst of the nations
whither they are gone:  and I will gather them on every side, and will
bring them to their own land.

37:22. And I will make them one nation in the land on the mountains of
Israel, and one king shall be king over them all:  and they shall no
more be two nations, neither shall they be divided any more into two
kingdoms.

37:23. Nor shall they be defiled any more with their idols, nor with
their abominations, nor with all their iniquities:  and I will save them
out of all the places in which they have sinned, and I will cleanse
them:  and they shall be my people, and I will be their God.

37:24. And my servant David shall be king over them, and they shall
have one shepherd:  they shall walk in my judgments, and shall keep my
commandments, and shall do them.

37:25. And they shall dwell in the land which I gave to my servant
Jacob, wherein your fathers dwelt, and they shall dwell in it, they and
their children, and their children's children, for ever:  and David my
servant shall be their prince for ever.

37:26. And I will make a covenant of peace with them, it shall be an
everlasting covenant with them:  and I will establish them, and will
multiply them, and will set my sanctuary in the midst of them for ever.

37:27. And my tabernacle shall be with them:  and I will be their God,
and they shall be my people.

37:28. And the nations shall know that I am the Lord the sanctifier of
Israel, when my sanctuary shall be in the midst of them for ever.



Ezechiel Chapter 38


Gog shall persecute the church in the latter days.  He shall be
overthrown.

38:1. And the word of the Lord came to me, saying:

38:2. Son of man, set thy face against Gog, the land of Magog, the
chief prince of Mosoch and Thubal:  and prophesy of him,

Gog. . .This name, which signifies hidden or covered, is taken in this
place, either for the persecutors of the church of God in general, or
some arch-persecutor in particular:  such as Antichrist shall be in the
latter days.  See Apoc. 20.8.  And what is said of the punishment of Gog,
is verified by the unhappy ends of persecutors.--Ibid.  Magog. . .Scythia
or Tartary, from whence the Turks, and other enemies of the church of
Christ, originally sprung.

38:3. And say to him:  Thus saith the Lord God:  Behold, I come against
thee, O Gog, the chief prince of Mosoch and Thubal.

38:4. And I will turn thee about, and I will put a bit in thy jaws:  and
I will bring thee forth, and all thy army, horses and horsemen all
clothed with coats of mail, a great multitude, armed with spears and
shields and swords.

38:5. The Persians, Ethiopians, and Libyans with them, all with shields
and helmets.

38:6. Gomer, and all his bands, the house of Thogorma, the northern
parts and all his strength, and many peoples with thee.

38:7. Prepare and make thyself ready, and all thy multitude that is
assembled about thee, and be thou commander over them.

38:8. After many days thou shalt be visited:  at the end of years thou
shalt come to the land that is returned from the sword, and is gathered
out of many nations, to the mountains of Israel which have been
continually waste:  but it hath been brought forth out of the nations,
and they shall all of them dwell securely in it.

38:9. And thou shalt go up and come like a storm, and like a cloud to
cover the land, thou and all thy bands and many people with thee.

38:10. Thus saith the Lord God:  In that day projects shall enter into
thy heart, and thou shalt conceive a mischievous design.

38:11. And thou shalt say:  I will go up to the land which is without a
wall, I will come to them that are at rest, and dwell securely:  all
these dwell without a wall, they have no bars nor gates:

38:12. To take spoils, and lay hold on the prey, to lay thy hand upon
them that had been wasted, and afterwards restored, and upon the people
that is gathered together out of the nations, which hath begun to
possess and to dwell in the midst of the earth.

38:13. Saba, and Dedan, and the merchants of Tharsis, and all the lions
thereof shall say to thee:  Art thou come to take spoils?  behold, thou
hast gathered thy multitude to take a prey, to take silver, and gold,
and to carry away goods and substance, and to take rich spoils.

38:14. Therefore, thou son of man, prophesy and say to Gog:  Thus saith
the Lord God:  Shalt thou not know, in that day, when my people of
Israel shall dwell securely?

38:15. And thou shalt come out of thy place from the northern parts,
thou and many people with thee, all of them riding upon horses, a great
company and a mighty army.

38:16. And thou shalt come upon my people of Israel like a cloud, to
cover the earth.  Thou shalt be in the latter days, and I will bring
thee upon my land:  that the nations may know me, when I shall be
sanctified in thee, O Gog, before their eyes.

38:17. Thus saith the Lord God:  Thou then art he, of whom I have spoken
in the days of old, by my servants the prophets of Israel, who
prophesied in the days of those times that I would bring thee upon
them.

38:18. And it shall come to pass in that day, in the day of the coming
of Gog upon the land of Israel, saith the Lord God, that my indignation
shall come up in my wrath.

38:19. And I have spoken in my zeal, and in the fire of my anger, that
in that day there shall be a great commotion upon the land of Israel:

38:20. So that the fishes of the sea, and the birds of the air, and the
beasts of the field, and every creeping thing that creepeth upon the
ground, and all men that are upon the face of the earth, shall be moved
at my presence:  and the mountains shall be thrown down, and the hedges
shall fall, and every wall shall fall to the ground.

38:21. And I will call in the sword against him in all my mountains,
saith the Lord God:  every man's sword shall be pointed against his
brother.

38:22. And I will judge him with pestilence, and with blood, and with
violent rain, and vast hailstones:  I will rain fire and brimstone upon
him, and upon his army, and upon the many nations that are with him.

38:23. And I will be magnified, and I will be sanctified:  and I will be
known in the eyes of many nations and they shall know that I am the
Lord.



Ezechiel Chapter 39


God's judgments upon Gog.  God's people were punished for their sins:
but shall be favoured with everlasting kindness.

39:1. And thou, son of man, prophesy against Gog, and say:  Thus saith
the Lord God:  Behold, I come against thee, O Gog, the chief prince of
Mosoch and Thubal.

39:2. And I will turn thee round, and I will lead thee out, and will
make thee go up from the northern parts:  and will bring thee upon the
mountains of Israel.

39:3. And I will break thy bow in thy left hand, and I will cause thy
arrows to fall out of thy right hand.

39:4. Thou shalt fall upon the mountains of Israel, thou and all thy
bands, and thy nations that are with thee:  I have given thee to the
wild beasts, to the birds, and to every fowl, and to the beasts of the
earth to be devoured.

39:5. Thou shalt fall upon the face of the field:  for I have spoken it,
saith the Lord God.

39:6. And I will send a fire on Magog, and on them that dwell
confidently in the islands:  and they shall know that I am the Lord.

39:7. And I will make my holy name known in the midst of my people
Israel, and my holy name shall be profaned no more:  and the Gentiles
shall know that I am the Lord, the Holy One of Israel.

39:8. Behold it cometh, and it is done, saith the Lord God:  this is the
day whereof I have spoken.

39:9. And the inhabitants shall go forth of the cities of Israel, and
shall set on fire and burn the weapons, the shields, and the spears,
the bows and the arrows, and the handstaves and the pikes:  and they
shall burn them with fire seven years.

39:10. And they shall not bring wood out of the countries, nor cut down
out of the forests:  for they shall burn the weapons with fire, and
shall make a prey of them to whom they had been a prey, and they shall
rob those that robbed them, saith the Lord God.

39:11. And it shall come to pass in that day, that I will give Gog a
noted place for a sepulchre in Israel:  the valley of the passengers on
the east of the sea, which shall cause astonishment in them that pass
by:  and there shall they bury Gog, and all his multitude, and it shall
be called the valley of the multitude of Gog.

39:12. And the house of Israel shall bury them for seven months to
cleanse the land.

39:13. And all the people of the land shall bury him, and it shall be
unto them a noted day, wherein I was glorified, saith the Lord God.

39:14. And they shall appoint men to go continually about the land, to
bury and to seek out them that were remaining upon the face of the
earth, that they may cleanse it:  and after seven months they shall
begin to seek.

39:15. And they shall go about passing through the land:  and when they
shall see the bone of a man, they shall set up sign by it, till the
buriers bury it in the valley, of the multitude of Gog.

39:16. And the name of the city shall be Amona, and they shall cleanse
the land.

39:17. And thou, O son of man, saith the Lord God, say to every fowl,
and to all the birds, and to all the beasts of the field:  Assemble
yourselves, make haste, come together from every side to my victim,
which I slay for you, a great victim upon the mountains of Israel:  to
eat flesh, and drink blood.

39:18. You shall eat the flesh of the mighty, and you shall drink the
blood of the princes of the earth, of rams, and of lambs, and of he
goats, and bullocks, and of all that are well fed and fat.

39:19. And you shall eat the fat till you be full, and shall drink
blood till you be drunk of the victim which I shall slay for you.

39:20. And you shall be filled at my table with horses, and mighty
horsemen, and all the men of war, saith the Lord God.

39:21. And I will set my glory among the nations:  and all nations shall
see my judgment that I have executed, and my hand that I have laid upon
them.

39:22. And the house of Israel shall know that I am the Lord their God
from that day and forward.

39:23. And the nations shall know that the house of Israel were made
captives for their iniquity, because they forsook me, and I hid my face
from them:  and I delivered them into the hands of their enemies, and
they fell all by the sword.

39:24. I have dealt with them according to their uncleanness, and
wickedness, and hid my face from them.

39:25. Therefore, thus saith the Lord God:  Now will I bring back the
captivity of Jacob, and will have mercy on all the house of Israel and
I will be jealous for my holy name.

39:26. And they shall bear their confusion, and all the transgressions
wherewith they have transgressed against me, when they shall dwell in
their land securely fearing no man:

39:27. And I shall have brought them back from among the nations, and
shall have gathered them together out of the lands of their enemies,
and shall be sanctified in them, in the sight of many nations.

39:28. And they shall know that I am the Lord their God, because I
caused them to be carried away among the nations; and I have gathered
them together unto their own land, and have not left any of them there.

39:29. And I will hide my face no more from them, for I have poured out
my spirit upon all the house of Israel, saith the Lord God.



Ezechiel Chapter 40


The prophet sees in a vision the rebuilding of the temple:  the
dimensions of several parts thereof.

40:1. In the five and twentieth year of our captivity, in the beginning
of the year, the tenth day of the month, the fourteenth year after the
city was destroyed:  in the selfsame day the hand of the Lord was upon
me, and he brought me thither.

40:2. In the visions of God he brought me into the land of Israel, and
set me upon a very high mountain:  upon which there was as the building
of a city, bending towards the south.

40:3. And he brought me in thither, and behold a man, whose appearance
was like the appearance of brass, with a line of flax in his hand, and
a measuring reed in his hand, and he stood in the gate.

40:4. And this man said to me:  Son of man, see with thy eyes, and hear
with thy ears, and set thy heart upon all that I shall shew thee:  for
thou art brought hither that they may be shewn to thee:  declare all
that thou seest, to the house of Israel.

40:5. And behold there was a wall on the outside of the house round
about, and in the man's hand a measuring reed of six cubits and a
handbreadth:  and he measured the breadth of the building one reed, and
the height one reed.

40:6. And he came to the gate that looked toward the east, and he went
up the steps thereof:  and he measured the breadth of the threshold of
the gate one reed, that is, one threshold was one reed broad;

40:7. And every little chamber was one reed long, and one reed broad:
and between the little chambers were five cubits:

40:8. And the threshold of the gate by the porch of the gate within,
was one reed.

40:9. And he measured the porch of the gate eight cubits, and the front
thereof two cubits:  and the porch of the gate was inward.

40:10. And the little chambers of the gate that looked eastward were
three on this side, and three on that side:  all three were of one
measure, and the fronts of one measure, on both parts.

40:11. And he measured the breadth of the threshold of the gate ten
cubits:  and the length of the gate thirteen cubits:

40:12. And the border before the little chambers one cubit:  and one
cubit was the border on both sides:  and the little chambers were six
cubits on this side and that side.

40:13. And he measured the gate from the roof of one little chamber to
the roof of another, in breadth five and twenty cubits:  door against
door.

40:14. He made also fronts of sixty cubits:  and to the front the court
of the gate on every side round about.

40:15. And before the face of the gate which reached even to the face
of the porch of the inner gate, fifty cubits.

40:16. And slanting windows in the little chambers, and in their
fronts, which were within the gate on every side round about:  and in
like manner there were also in the porches windows round about within,
and before the fronts the representation of palm trees.

40:17. And he brought me into the outward court, and behold there were
chambers, and a pavement of stone in the court round about:  thirty
chambers encompassed the pavement.

There were chambers. . .Gazophylacia, so called, because the priests and
Levites kept in them the stores and vessels that belonged to the
temple.

40:18. And the pavement in the front of the gates according to the
length of the gates was lower.

40:19. And he measured the breadth from the face of the lower gate to
the front of the inner court without, a hundred cubits to the east, and
to the north.

40:20. He measured also both the length and the breadth of the gate of
the outward court, which looked northward.

40:21. And the little chambers thereof three on this side, and three on
that side:  and the front thereof, and the porch thereof according to
the measure of the former gate, fifty cubits long, and five and twenty
cubits broad.

40:22. And the windows thereof, and the porch, and the gravings
according to the measure of the gate that looked to the east, and they
went up to it by seven steps, and a porch was before it.

40:23. And the gate of the inner court was over against the gate of the
north, and that of the east:  and he measured from gate to gate a
hundred cubits.

40:24. And he brought me out to the way of the south, and behold the
gate that looked to the south:  and he measured the front thereof, and
the porch thereof according to the former measures.

40:25. And the windows thereof, and the porches round about, as the
other windows:  the length was fifty cubits, and the breadth five and
twenty cubits.

40:26. And there were seven steps to go up to it:  and a porch before
the doors thereof:  and there were graven palm trees, one on this side,
and another on that side in the front thereof.

40:27. And there was a gate of the inner court towards the south:  and
he measured from gate to gate towards the south, a hundred cubits.

40:28. And he brought me into the inner court at the south gate:  and he
measured the gate according to the former measures.

40:29. The little chamber thereof, and the front thereof, and the porch
thereof with the same measures:  and the windows thereof, and the porch
thereof round about it was fifty cubits in length, and five and twenty
cubits in breadth.

40:30. And the porch round about was five and twenty cubits long, and
five cubits broad.

40:31. And the porch thereof to the outward court, and the palm trees
thereof in the front:  and there were eight steps to go up to it.

40:32. And he brought me into the inner court by the way of the east:
and he measured the gate according to the former measures.

40:33. The little chamber thereof, and the front thereof, and the porch
thereof as before:  and the windows thereof, and the porches thereof
round about it was fifty cubits long, and five and twenty cubits broad.

40:34. And the porch thereof, that is, of the outward court:  and the
graven palm trees in the front thereof on this side and on that side:
and the going up thereof was by eight steps.

40:35. And he brought me into the gate that looked to the north:  and he
measured according to the former measures.

40:36. The little chamber thereof, and the front thereof, and the porch
thereof, and the windows thereof round about it was fifty cubits long,
and five and twenty cubits broad.

40:37. And the porch thereof looked to the outward court:  and the
graving of palm trees in the front thereof was on this side and on that
side:  and the going up to it was by eight steps.

40:38. And at every chamber was a door in the forefronts of the gates:
there they washed the holocaust.

40:39. And in the porch of the gate were two tables on this side, and
two tables on that side:  that the holocaust, and the sin offering, and
the trespass offering might be slain thereon.

40:40. And on the outward side, which goeth up to the entry of the gate
that looketh toward the north, were two tables:  and at the other side
before the porch of the gate were two tables,

40:41. Four tables were on this side, and four tables on that side at
the sides of the gate were eight tables, upon which they slew the
victims.

40:42. And the four tables for the holocausts were made of square
stones:  one cubit and a half long, and one cubit and a half broad, and
one cubit high:  to lay the vessels upon, in which the holocaust and the
victim is slain.

40:43. And the borders of them were of one handbreadth, turned inwards
round about:  and upon the tables was the flesh of the offering.

40:44. And without the inner gate were the chambers of the singing men
in the inner court, which was on the side of the gate that looketh to
the north:  and their prospect was towards the south, one at the side of
the east gate, which looketh toward the north.

40:45. And he said to me:  This chamber, which looketh toward the south
shall be for the priests that watch in the wards of the temple.

40:46. But the chamber that looketh towards the north shall be for the
priests that watch over the ministry of the altar.  These are the sons
of Sadoc, who among the sons of Levi, come near to the Lord, to
minister to him.

40:47. And he measured the court a hundred cubits long, and a hundred
cubits broad foursquare:  and the altar that was before the face of the
temple.

40:48. And he brought me into the porch of the temple:  and he measured
the porch five cubits on this side, and five cubits on that side:  and
the breadth of the gate three cubits on this side, and three cubits on
that side.

40:49. And the length of the porch was twenty cubits, and the breadth
eleven cubits, and there were eight steps to go up to it.  And there
were pillars in the fronts:  one on this side, and another on that side.



Ezechiel Chapter 41


A description of the temple, and of all the parts of it.

41:1. And he brought me into the temple, and he measured the fronts six
cubits broad on this side, and six cubits on that side, the breadth of
the tabernacle.

The temple. . .This plan of a temple, which was here shewn to the
prophet in a vision, partly had relation to the material temple, which
was to be rebuilt:  and partly, in a mystical sense, to the spiritual
temple of God, the church of Christ.

41:2. And the breadth of the gate was ten cubits:  and the sides of the
gate five cubits on this side, and five cubits on that side:  and he
measured the length thereof forty cubits, and the breadth twenty
cubits.

41:3. Then going inward he measured the front of the gate two cubits:
and the gate six cubits, and the breadth of the gate seven cubits.

41:4. And he measured the length thereof twenty cubits, and the breadth
twenty cubits, before the face of the temple:  and he said to me:  This
is the holy of holies.

41:5. And he measured the wall of the house six cubits:  and the breadth
of every side chamber four cubits round about the house on every side.

41:6. And the side chambers one by another, were twice thirty-three:
and they bore outwards, that they might enter in through the wall of
the house in the sides round about, to hold in, and not to touch the
wall of the temple.

One by another. . .Or one over another; literally, side to side, or side
upon side.

41:7. And there was a broad passage round about, going up by winding
stairs, and it led into the upper loft of the temple all round:
therefore was the temple broader in the higher parts:  and so from the
lower parts they went to the higher by the midst.

41:8. And I saw in the house the height round about, the foundations of
the side chambers which were the measure of a reed the space of six
cubits:

41:9. And the thickness of the wall for the side chamber without, which
was five cubits:  and the inner house was within the side chambers of
the house,

And the inner house was within the side chambers of the
house. . .Because these side chambers were in the very walls of the
temple all round.  Or, it may also be rendered (more agreeably to the
Hebrew) so as to signify that the thickness of the wall for the side
chamber within, was the same as that of the wall without; that is,
equally five cubits.

41:10. And between the chambers was the breadth of twenty cubits round
about the house on every side.

41:11. And the door of the side chambers was turned towards the place
of prayer:  one door was toward the north, and another door was toward
the south:  and the breadth of the place for prayer, was five cubits
round about.

41:12. And the building that was separate, and turned to the way that
looked toward the sea, was seventy cubits broad and the wall of the
building, five cubits thick round about:  and ninety cubits long.

41:13. And he measured the length of the house, a hundred cubits:  and
the separate building, and the walls thereof, a hundred cubits in
length.

41:14. And the breadth before the face of the house, and of the
separate place toward the east, a hundred cubits.

41:15. And he measured the length of the building over against it,
which was separated at the back of it:  and the galleries on both sides
a hundred cubits:  and the inner temple, and the porches of the court.

41:16. The thresholds, and the oblique windows, and the galleries round
about on three sides, over against the threshold of every one, and
floored with wood all round about:  and the ground was up to the
windows, and the windows were shut over the doors.

41:17. And even to the inner house, and without all the wall round
about within and without, by measure.

41:18. And there were cherubims and palm trees wrought, so that a palm
tree was between a cherub and a cherub, and every cherub had two faces.

41:19. The face of a man was toward the palm tree on one side, and the
face of a lion was toward the palm tree on the other side:  set forth
through all the house round about.

41:20. From the ground even to the upper parts of the gate, were
cherubims and palm trees wrought in the wall of the temple.

41:21. The threshold was foursquare, and the face of the sanctuary
sight to sight.

The threshold was foursquare. . .That is, the gate of the temple was
foursquare:  and so placed as to answer the gate of the sanctuary
within.

41:22. The altar of wood was three cubits high:  and the length thereof
was two cubits:  and the corners thereof, aid the length thereof, and
the walls thereof, were of wood.  And he said to me:  This is the table
before the Lord.

41:23. And there were two doors in the temple, and in the sanctuary.

41:24. And in the two doors on both sides were two little doors, which
were folded within each other:  for there were two wickets on both sides
of the doors.

41:25. And there were cherubims also wrought in the doors of the
temple, and the figures of palm trees, like as were made on the walls:
for which cause also the planks were thicker in the front of the porch
without.

41:26. Upon which were the oblique windows, and the representation of
palm trees on this side, and on that side in the sides of the porch,
according to the sides of the house, and the breadth of the walls.



Ezechiel Chapter 42


A description of the courts, chambers, and other places belonging to
the temple.

42:1. And he brought me forth into the outward court by the way that
leadeth to the north, and he brought me into the chamber that was over
against the separate building, and over against the house toward the
north.

42:2. In the face of the north door was the length of hundred cubits,
and the breadth of fifty cubits.

42:3. Over against the twenty cubits of the inner court, and over
against the pavement of the outward court that was paved with stone,
where there was a gallery joined to a triple gallery.

42:4. And before the chambers was a walk ten cubits broad, looking to
the inner parts of a way of one cubit.  And their doors were toward the
north.

42:5. Where were the store chambers lower above:  because they bore up
the galleries, which appeared above out of them from he lower parts,
and from the midst of the building.

42:6. For they were of three stories, and had not pillars, as the
pillars of the courts:  therefore did they appear above out of the lower
places, and out of the middle places, fifty cubits from the ground.

42:7. And the outward wall that went about by the chambers, which were
towards the outward court on the forepart of the chambers, was fifty
cubits long.

42:8. For the length of the chambers of the outward court was fifty
cubits:  and the length before the face of the temple, a hundred cubits.

42:9. And there was under these chambers, an entrance from the east,
for them that went into them out of the outward court.

42:10. In the breadth of the outward wall of the court that was toward
the east, over against the separate building, and there were chambers
before the building.

42:11. And the way before them was like the chambers which were toward
the north:  they were as long as they, and as broad as they:  and all the
going in to them, and their fashions, and their doors were alike.

42:12. According to the doors of the chambers that were towards the
south:  there was a door in the head of the way, which way was before
the porch, separated towards the east as one entereth in.

42:13. And he said to me:  The chambers of the north, and the chambers
of the south, which are before the separate building:  they are holy
chambers, in which the priests shall eat, that approach to the Lord
into the holy of holies:  there they shall lay the most holy things, and
the offering for sin, and for trespass:  for it is a holy place.

42:14. And when the priests shall have entered in, they shall not go
out of the holy places into the outward court:  but there they shall lay
their vestments, wherein they minister, for they are holy:  and they
shall put on other garments, and so they shall go forth to the people.

42:15. Now when he had made an end of measuring the inner house, he
brought me out by the way of the gate that looked toward the east:  and
he measured it on every side round about.

42:16. And he measured toward the east with the measuring reed, five
hundred reeds with the measuring reed round about.

42:17. And he measured toward the north five hundred reeds with the
measuring reed round about.

42:18. And towards the south he measured five hundred reeds with the
measuring reed round about.

42:19. And toward the west he measured five hundred reeds, with the
measuring reed.

42:20. By the four winds he measured the wall thereof on every side
round about, five hundred cubits and five hundred cubits broad, making
a separation between the sanctuary and the place of the people.



Ezechiel Chapter 43


The glory of God returns to the new temple.  The Israelites shall no
more profane God's name by idolatry:  the prophet is commanded to shew
them the dimensions, and form of the temple, and of the altar, with the
sacrifices to be offered thereon.

43:1. And he brought me to the gate that looked towards the east.

43:2. And behold the glory of the God of Israel came in by the way of
the east:  and his voice was like the noise of many waters, and the
earth shone with his majesty.

43:3. And I saw the vision according to the appearance which I had seen
when he came to destroy the city:  and the appearance was according to
the vision which I had seen by the river Chobar:  and I fell upon my
face.

43:4. And the majesty of the Lord went into the temple by the way of
the gate that looked to the east.

43:5. And the spirit lifted me up and brought me into the inner court:
and behold the house was filled with the glory of the Lord.

43:6. And I heard one speaking to me out of the house, and the man that
stood by me,

43:7. Said to me:  Son of man, the place of my throne, and the place of
the soles of my feet, where I dwell in the midst of the children of
Israel for ever:  and the house of Israel shall no more profane my holy
name, they and their kings by their fornications, and by the carcasses
of their kings, and by the high places.

43:8. They who have set their threshold by my threshold, and their
posts by my posts:  and there was but a wall between me, and them:  and
they profaned my holy name by the abominations which they committed:
for which reason I consumed them in my wrath.

43:9. Now therefore let them put away their fornications, and the
carcasses of their kings far from me:  and I will dwell in the midst of
them for ever.

43:10. But thou, son of man, shew to the house of Israel the temple,
and let them be ashamed of their iniquities, and let them measure the
building:

43:11. And be ashamed of all that they have done.  Shew them the form of
the house, and of the fashion thereof, the goings out and the comings
in, and the whole plan thereof, and all its ordinances, and all its
order, and all its laws, and thou shalt write it in their sight:  that
they may keep the whole form thereof, and its ordinances, and do them.

43:12. This is the law of the house upon the top of the mountain:  All
its border round about; most holy:  this then is the law of the house.

43:13. And these are the measures of the altar by the truest cubit,
which is a cubit and a handbreadth:  the bottom thereof was a cubit, and
the breadth a cubit:  and the border thereof unto its edge, and round
about, one handbreadth:  and this was the trench of the altar.

43:14. And from the bottom of the ground to the lowest brim two cubits,
and the breadth of one cubit:  and from the lesser brim to the greater
brim four cubits, and the breadth of one cubit.

43:15. And the Ariel itself was four cubits:  and from the Ariel upward
were four horns.

The Ariel. . .That is, the altar itself, or rather the highest part of
it, upon which the burnt offerings were laid.  In the Hebrew it is
Harel, that is, the mountain of God:  but in the following verse
Haariel, that is, the lion of God; a figure, from its consuming, and as
it were devouring the sacrifices, as a lion devours its prey.

43:16. And the Ariel was twelve cubits long, and twelve cubits broad,
foursquare, with equal sides.

43:17. And the brim was fourteen cubits long, and fourteen cubits broad
in the four corners thereof:  and the crown round about it was half a
cubit, and the bottom of it one cubit round about:  and its steps turned
toward the east.

43:18. And he said to me:  Son of man, thus saith the Lord God:  These
are the ceremonies of the altar, in what day soever it shall be made:
that holocausts may be offered upon it, and blood poured out.

43:19. And thou shalt give to the priests, and the Levites, that are of
the race of Sadoc, who approach to me, saith the Lord God, to offer to
me a calf of the herd for sin.

43:20. And thou shalt take of his blood, and shalt put it upon the four
horns thereof, and upon the four corners of the brim, and upon the
crown round about:  and thou shalt cleanse, and expiate it.

43:21. And thou shalt take the calf, that is offered for sin:  and thou
shalt burn him in a separate place of the house without the sanctuary.

43:22. And in the second day thou shalt offer a he goat without blemish
for sin:  and they shall expiate the altar, as they expiated it with the
calf.

43:23. And when thou shalt have made an end of the expiation thereof,
thou shalt offer a calf of the herd without blemish, and a ram of the
flock without blemish.

43:24. And thou shalt offer them in the sight of the Lord, and the
priests shall put salt upon them, and shall offer them a holocaust to
the Lord.

43:25. Seven days shalt thou offer a he goat for sin daily:  they shall
offer also a calf of the herd, and a ram of the flock without blemish.

43:26. Seven days shall they expiate the altar, and shall cleanse it:
and they shall consecrate it.

Consecrate it. . .Literally, fill its hand, that is, dedicate and apply
it to holy service.

43:27. And the days being expired, on the eighth day and thenceforward,
the priests shall offer your holocausts upon the altar, and the peace
offerings:  and I will be pacified towards you, saith the Lord God.



Ezechiel Chapter 44


The east gate of the sanctuary shall be always shut.  The uncircumcised
shall not enter into the sanctuary:  nor the Levites that have served
idols:  but the sons of Sadoc shall do the priestly functions, who stood
firm in the worst of times.

44:1. And he brought me back to the way of the gate of the outward
sanctuary, which looked towards the east:  and it was shut.

44:2. And the Lord said to me:  This gate shall be shut, it shall not be
opened, and no man shall pass through it:  because the Lord the God of
Israel hath entered in by it, and it shall be shut

44:3. For the prince.  The prince himself shall sit in it, to eat bread
before the Lord:  he shall enter in by the way of the porch of the gate,
and shall go out by the same way.

44:4. And he brought me by the way of the north gate, in the sight of
the house:  and I saw, and behold the glory of the Lord filled the house
of the Lord:  and I fell on my face.

44:5. And the Lord said to me:  Son of man, attend with thy heart and
behold with thy eyes, and hear with thy ears, all that I say to thee
concerning all the ceremonies of the house of the Lord, and concerning
all the laws thereof:  and mark well the ways of the temple, with all
the goings out of the sanctuary.

44:6. And thou shalt say to the house of Israel that provoketh me:  Thus
saith the Lord God:  Let all your wicked doings suffice you, O house of
Israel:

44:7. In that you have brought in strangers uncircumcised in heart, and
uncircumcised in flesh, to be in my sanctuary, and to defile my house:
and you offer my bread, the fat, and the blood:  and you have broken my
covenant by all your wicked doings.

44:8. And you have not kept the ordinances of my sanctuary:  but you
have set keepers of my charge in my sanctuary for yourselves.

44:9. Thus saith the Lord God:  No stranger uncircumcised in heart, and
uncircumcised in flesh, shall enter into my sanctuary, no stranger that
is in the midst of the children of Israel.

44:10. Moreover the Levites that went away far from me, when the
children of Israel went astray, and have wandered from me after their
idols, and have borne their iniquity:

44:11. They shall be officers in my sanctuary, and doorkeepers of the
gates of the house, and ministers to the house:  they shall slay the
holocausts, and the victims of the people:  and they shall stand in
their sight, to minister to them.

44:12. Because they ministered to them before their idols, and were a
stumblingblock of iniquity to the house of Israel:  therefore have I
lifted up my hand against them, saith the Lord God, and they shall bear
their iniquity:

44:13. And they shall not come near to me, to do the office of priest
to me, neither shall they come near to any of my holy things that are
by the holy of holies:  but they shall bear their shame, and their
wickednesses which they have committed.

44:14. And I will make them doorkeepers of the house, for all the
service thereof, and for all that shall be done therein.

44:15. But the priests, and Levites, the sons of Sadoc, who kept the
ceremonies of my sanctuary, when the children of Israel went astray
from me, they shall come near to me, to minister to me:  and they shall
stand before me, to offer me the fat, and the blood, saith the Lord
God.

44:16. They shall enter into my sanctuary, and they shall come near to
my table, to minister unto me, and to keep my ceremonies.

44:17. And when they shall enter in at the gates of the inner court,
they shall be clothed with linen garments:  neither shall any woollen
come upon them, when they minister in the gates of the inner court and
within.

44:18. They shall have linen mitres on their heads, and linen breeches
on their loins, and they shall not be girded with any thing that
causeth sweat.

44:19. And when they shall go forth to the outward court to the people,
they shall put off their garments wherein they ministered, and lay them
up in the store chamber of the sanctuary, and they shall clothe
themselves with other garments:  and they shall not sanctify the people
with their vestments.

Shall not sanctify the people with their vestments. . .By exposing them
to the danger of touching the sacred vestments, which none were to
touch but they that were sanctified.

44:20. Neither shall they shave their heads, nor wear long hair:  but
they shall only poll their heads.

44:21. And no priest shall drink wine when he is to go into the inner
court.

44:22. Neither shall they take to wife a widow, nor one that is
divorced, but they shall take virgins of the seed of the house of
Israel:  but they may take a widow also, that is, the widow of a priest.

44:23. And they shall teach my people the difference between holy and
profane, and shew them how to discern between clean and unclean.

44:24. And when there shall be a controversy, they shall stand in my
judgments, and shall judge:  they shall keep my laws, and my ordinances
in all my solemnities, and sanctify my sabbaths.

44:25. And they shall come near no dead person, lest they be defiled,
only their father and mother, and son and daughter, and brother and
sister, that hath not had another husband:  for whom they may become
unclean.

44:26. And after one is cleansed, they shall reckon unto him seven
days.

44:27. And in the day that he goeth into the sanctuary, to the inner
court, to minister unto me in the sanctuary, he shall offer for his
sin, saith the Lord God.

44:28. And they shall have no inheritance, I am their inheritance:
neither shall you give them any possession in Israel, for I am their
possession.

44:29. They shall eat the victim both for sin and for trespass:  and
every vowed thing in Israel shall be theirs.

30. And the firstfruits of all the firstborn, and all the libations of
all things that are offered, shall be the priest's:  and you shall give
the firstfruits of your meats to the priest, that he may return a
blessing upon thy house.

44:31. The priests shall not eat of any thing that is dead of itself or
caught by a beast, whether it be fowl or cattle.



Ezechiel Chapter 45


Portions of land for the sanctuary, for the city, and for the prince.
Ordinances for the prince.

45:1. And when you shall begin to divide the land by lot, separate ye
firstfruits to the Lord, a portion of the land to be holy, in length
twenty-five thousand and in breadth ten thousand:  it shall be holy in
all the borders thereof round about.

Twenty-five thousand. . .Viz., reeds or cubits.

45:2. And there shall be for the sanctuary on every side five hundred
by five hundred, foursquare round about:  and fifty cubits for the
suburbs thereof round about.

45:3. And with this measure thou shalt measure the length of five and
twenty thousand, and the breadth of ten thousand, and in it shall be
the temple and the holy of holies.

45:4. The holy portion of the land shall be for the priests the
ministers of the sanctuary, who come near to the ministry of the Lord:
and it shall be a place for their houses, and for the holy place of the
sanctuary.

45:5. And five and twenty thousand of length, and ten thousand of
breadth shall be for the Levites, that minister in the house:  they
shall possess twenty store chambers.

45:6. And you shall appoint the possession of the city five thousand
broad, and five and twenty thousand long, according to the separation
of the sanctuary, for the whole house of Israel.

45:7. For the prince also on the one side and on the other side,
according to the separation of the sanctuary, and according to the
possession of the city, over against the separation of the sanctuary,
and over against the possession of the city:  from the side of the sea
even to the sea, and from the side of the east even to the east.  And
the length according to every part from the west border to the east
border.

45:8. He shall have a portion of the land in Israel:  and the princes
shall no more rob my people:  but they shall give the land to the house
of Israel according to their tribes:

45:9. Thus saith the Lord God:  Let it suffice you, O princes of Israel:
cease from iniquity and robberies, and execute judgment and justice,
separate your confines from my people, saith the Lord God.

45:10. You shall have just balances, and a just ephi, and a just bate.

45:11. The ephi and the bate shall be equal, and of one measure:  that
the bate may contain the tenth part of a core, and the ephi the tenth
part of a core:  their weight shall be equal according to the measure of
a core.

The ephi and the bate. . .These measures were of equal capacity, but the
bate served for liquids, and the ephi for dry things.

45:12. And the sicle hath twenty obols.  Now twenty sicles, and five and
twenty sicles, and fifteen sicles, make a mna,

45:13. And these are the firstfruits, which you shall take:  the sixth
part of an ephi of a core of wheat, and the sixth part of an ephi of a
core of barley.

45:14. The measure of oil also, a bate of oil is the tenth part of a
core:  and ten bates make a core:  for ten bates fill a core.

45:15. And one ram out of a flock of two hundred, of those that Israel
feedeth for sacrifice, and for holocausts, and for peace offerings, to
make atonement for them, saith the Lord God.

45:16. All the people of the land shall be bound to these firstfruits
for the prince in Israel.

45:17. And the prince shall give the holocaust, and the sacrifice, and
the libations on the feasts, and on the new moons, and on the sabbaths,
and on all the solemnities of the house of Israel:  he shall offer the
sacrifice for sin, and the holocaust, and the peace offerings to make
expiation for the house of Israel.

45:18. Thus saith the Lord God:  In the first month, the first of the
month, thou shalt take a calf of the herd without blemish, and thou
shalt expiate the sanctuary.

45:19. And the priest shall take of the blood of the sin offering:  and
he shall put it on the posts of the house, and on the four corners of
the brim of the altar, and oil the posts of the gate of the inner
court.

45:20. And so shalt thou do in the seventh day of the month, for every
one that hath been ignorant, and hath been deceived by error, and thou
shalt make expiation for the house.

45:21. In the first month, the fourteenth day of the month, you shall
observe the solemnity of the pasch:  seven days unleavened bread shall
be eaten.

45:22. And the prince on that day shall offer for himself, and for all
the people of the land, a calf for sin.

45:23. And in the solemnity of the seven days he shall offer for a
holocaust to the Lord, seven calves, and seven rams without blemish
daily for seven days:  and for sin a he goat daily.

45:24. And he shall offer the sacrifice of an ephi for every calf, and
an ephi for every ram:  and a hin of oil for every ephi.

45:25. In the seventh month, in the fifteenth day of the month, in the
solemn feast, he shall do the like for the seven days:  as well in
regard to the sin offering, as to the holocaust, and the sacrifice, and
the oil.



Ezechiel Chapter 46


Other ordinances for the prince and for the sacrifices.

46:1. Thus saith the Lord God:  The gate of the inner court that looketh
toward the east, shall be shut the six days, on which work is done; but
on the sabbath day it shall be opened, yea and on the day of the new
moon it shall be opened.

46:2. And the prince shall enter by the way of the porch of the gate
from without, and he shall stand at the threshold of the gate:  and the
priests shall offer his holocaust, and his peace offerings:  and he
shall adore upon the threshold of the gate, and shall go out:  but the
gate shall not be shut till the evening.

46:3. And the people of the land shall adore at the door of that gate
before the Lord on the sabbaths, and on the new moons.

46:4. And the holocaust that the prince shall offer to the Lord on the
sabbath day, shall be six lambs without blemish, and a ram without
blemish.

46:5. And the sacrifice of all ephi for a ram:  but for the lambs what
sacrifice his hand shall allow:  and a hin of oil for every ephi.

46:6. And on the day of the new moon a calf of the herd without
blemish:  and the six lambs, and the rams shall be without blemish.

46:7. And he shall offer in sacrifice an ephi for calf, an ephi also
for a ram:  but for the lambs, as his hand shall find:  and a hin of oil
for every ephi.

46:8. And when the prince is to go in, let him go in by the way of the
porch of the gate, and let him go out the same way.

46:9. But when the people of the land shall go in before the Lord in
the solemn feasts, he that goeth in by the north gate to adore, shall
go out by the way of the south gate; and he that goeth in by the way of
the south gate, shall go out by the way of the north gate:  he shall not
return by the way of the gate whereby he came in, but shall go out at
that over against it.

46:10. And the prince in the midst of them, shall go in when they go
in, and go out when they go out.

46:11. And in the fairs, and in the solemnities there shall be the
sacrifice of an ephi to a calf, and an ephi to a ram:  and to the lambs,
the sacrifice shall be as his hand shall find:  and a hin of oil to
every ephi.

46:12. But when the prince shall offer a voluntary holocaust, or
voluntary peace offering to the Lord:  the gate that looketh towards the
east shall be opened to him, and he shall offer his holocaust, and his
peace offerings, as it is wont to be done on the sabbath day:  and he
shall go out, and the gate shall be shut after he is gone forth.

46:13. And he shall offer every day for a holocaust to the Lord, a lamb
of the same year without blemish:  he shall offer it always in the
morning.

46:14. And he shall offer the sacrifice for it morning by morning, the
sixth part of an ephi:  and the third part of a hin of oil to be mingled
with the fine flour:  a sacrifice to the Lord by ordinance continual and
everlasting.

46:15. He shall offer the lamb, and the sacrifice, and the oil morning
by morning:  an everlasting holocaust.

46:16. Thus saith the Lord God:  If the prince give a gift to any of his
sons:  the inheritance of it shall go to his children, they shall
possess it by inheritance.

46:17. But if he give a legacy out of his inheritance to one of his
servants, it shall be his until the year of release, and it shall
return to the prince:  but his inheritance shall go to his sons.

46:18. And the prince shall not take of the people's inheritance by
violence, nor of their possession:  but out of his own possession he
shall give an inheritance to his sons:  that my people be not dispersed
every man from his possession.

46:19. And he brought me in by the entry that was at the side of the
gate, into the chambers of the sanctuary that were for the priests,
which looked toward the north.  And there was a place bending to the
west.

46:20. And he said to me:  This is the place where the priests shall
boil the sin offering, and the trespass offering:  where they shall
dress the sacrifice, that they may not bring it out into the outward
court, and the people be sanctified.

46:21. And he brought me into the outward court, and he led me about by
the four corners of the court:  and behold there was a little court in
the corner of the court, to every corner of the court there was a
little court.

46:22. In the four corners of the court were little courts disposed,
forty cubits long, and thirty broad, all the four were of one measure.

46:23. And there was a wall round about compassing the four little
courts, and there were kitchens built under the rows round about.

46:24. And he said to me:  This is the house of the kitchens wherein the
ministers of the house of the Lord shall boil the victims of the
people.



Ezechiel Chapter 47


The vision of the holy waters issuing out from under the temple:  the
borders of the land to be divided among the twelve tribes.

47:1. And he brought me again to the gate of the house, and behold
waters issued out from under the threshold of the house toward the
east:  for the forefront of the house looked toward the east:  but the
waters came down to the right side of the temple to the south part of
the altar.

Waters. . .These waters are not to be understood literally (for there
were none such that flowed from the temple); but mystically, of the
baptism of Christ, and of his doctrine and his grace:  the trees that
grow on the banks are Christian virtues:  the fishes are Christians,
that spiritually live in and by these holy waters, the fishermen are
the apostles, and apostolic preachers:  the fenny places, where there is
no health, are such as by being out of the church are separated from
these waters of life.

47:2. And he led me out by the way of the north gate, and he caused me
to turn to the way without the outward gate to the way that looked
toward the east:  and behold there ran out waters on the right side.

47:3. And when the man that had the line in his hand went out towards
the east, he measured a thousand cubits:  and he brought me through the
water up to the ankles.

47:4. And again he measured a thousand, and he brought me through the
water up to the knees.

47:5. And he measured a thousand, and he brought me through the water
up to the loins.  And he measured a thousand, and it was a torrent,
which I could not pass over:  for the waters were risen so as to make a
deep torrent, which could not be passed over.

47:6. And he said to me:  Surely thou hast seen, O son of man.  And he
brought me out, and he caused me to turn to the bank of the torrent.

47:7. And when I had turned myself, behold on the bank of the torrent
were very many trees on both sides.

47:8. And he said to me:  These waters that issue forth toward the
hillocks of sand to the east, and go down to the plains of the desert,
shall go into the sea, and shall go out, and the waters shall be
healed.

47:9. And every living creature that creepeth whithersoever the torrent
shall come, shall live:  and there shall be fishes in abundance after
these waters shall come thither, and they shall be healed, and all
things shall live to which the torrent shall come.

47:10. And the fishers shall stand over these waters, from Engaddi even
to Engallim there shall be drying of nets:  there shall be many sorts of
the fishes thereof, as the fishes of the great sea, a very great
multitude:

47:11. But on the shore thereof, and in the fenny places they shall not
be healed, because they shall be turned into saltpits.

47:12. And by the torrent on the banks thereof on both sides shall grow
all trees that bear fruit:  their leaf shall not fall off, and their
fruit shall not fail:  every month shall they bring forth firstfruits,
because the waters thereof shall issue out of the sanctuary:  and the
fruits thereof shall be for food, and the leaves thereof for medicine.

47:13. Thus saith the Lord God:  This is the border, by which you shall
possess the land according to the twelve tribes of Israel:  for Joseph
hath a double portion.

47:14. And you shall possess it, every man in like manner as his
brother:  concerning which I lifted up my hand to give it to your
fathers:  and this land shall fall unto you for a possession.

47:15. And this is the border of the land:  toward the north side, from
the great sea by the way of Hethalon, as men go to Sedada,

47:16. Emath, Berotha, Sabarim, which is between the border of Damascus
and the border of Emath the house of Tichon, which is by the border of
Auran.

47:17. And the border from the sea even to the court of Enan, shall be
the border of Damascus, and from the north to the north:  the border of
Emath, this is the north side.

47:18. And the east side is from the midst of Auran, and from the midst
of Damascus, and from the midst of Galaad, and from the midst of the
land of Israel, Jordan making the bound to the east sea, and thus you
shall measure the east side.

47:19. And the south side southward is, from Thamar even to the waters
of contradiction of Cades:  and, the torrent even to the great sea:  and
this is the south side southward.

47:20. And the side toward the sea, is the great sea from the borders
straight on, till thou come to Emath:  this is the side of the sea.

47:21. And you shall divide this land unto you by the tribes of Israel:

47:22. And you shall divide it by lot for an inheritance to you, and to
the strangers that shall come over to you, that shall beget children
among you:  and they shall be unto you as men of the same country born
among the children of Israel:  they shall divide the possession with you
in the midst of the tribes of Israel.

47:23. And in what tribe soever the stranger shall be, there shall you
give him possession, saith the Lord God.



Ezechiel Chapter 48


The portions of the twelve tribes, of the sanctuary, of the city, and
of the prince.  The dimensions and gates of the city.

48:1. And these are the names of the tribes from the borders of the
north, by the way of Hethalon, as they go to Emath, the court of Enan
the border of Damascus northward, by the way off Emath.  And from the
east side thereof to the sea shall be one portion for Dan.

48:2. And by the border of Dan, from the east side even to the side of
the sea, one portion for Aser:

48:3. And by the border of Aser, from the east side even to the side of
the sea one portion for Nephthali.

48:4. And by the border of Nephthali, from the east side even to the
side of the one portion for Manasses.

48:5. And by the border of Manasses, from the east side even to the
side of the sea, one portion for Ephraim.

48:6. And by the border of Ephraim, from the east side even to the side
of the sea, one portion for Ruben.

48:7. And by the border of Ruben, from the east side even to the side
of the sea, one portion for Juda.

48:8. And by the border of Juda, from the east side even to the side of
the sea, shall be the firstfruits which you shall set apart, five and
twenty thousand in breadth, and length, as every one of the portions
from the east side to the side of the sea:  and the sanctuary shall be
in the midst thereof.

48:9. The firstfruits which you shall set apart for the Lord will be
the length of five and twenty thousand, and the breadth of ten
thousand.

48:10. And these shall be the firstfruits of the sanctuary for the
priests:  toward the north five and twenty thousand in length, and
toward the sea ten thousand in breadth, and toward the east also ten
thousand in breadth, and toward the south five and twenty thousand in
length:  and the sanctuary of the Lord shall be in the midst thereof.

48:11. The sanctuary shall be for the priests of the sons of Sadoc, who
kept my ceremonies, and went not astray when the children of Israel
went astray, as the Levites also went astray.

48:12. And for them shall be the firstfruits of the firstfruits of the
land holy of holies, by the border of the Levites,

48:13. And the Levites in like manner shall have by the borders of the
priests five and twenty thousand in length, and ten thousand in
breadth.  All the length shall be five and twenty thousand, and the
breadth ten thousand.

48:14. And they shall not sell thereof, nor exchange, neither shall the
firstfruits of the land be alienated, because they are sanctified to
the Lord.

48:15. But the five thousand that remain in the breadth over against
the five and twenty thousand, shall be a profane place for the city for
dwelling, and for suburbs and the city shall be in the midst thereof.

48:16. And these are the measures thereof:  on the north side four
thousand and five hundred:  and on the south side four thousand and five
hundred:  and on the east side four thousand and five hundred:  and on
the west side four thousand and five hundred.

48:17. And the suburbs of the city shall be to the north two hundred
and fifty, and the south two hundred and fifty, and to the east two
hundred and fifty, and to the sea two hundred and fifty.

48:18. And the residue in length by the firstfruits of the sanctuary,
ten thousand toward the east, and ten thousand toward the west, shall
be as the firstfruits of the sanctuary:  and the fruit thereof shall be
for bread to them that serve the city.

48:19. And they that serve the city, shall serve it out of all the
tribes of Israel.

48:20. All the firstfruits, of five and twenty thousand, by five and
twenty thousand foursquare, shall be set apart for the firstfruits of
the sanctuary, and for the possession of the city.

48:21. And the residue shall be for the prince on every side of the
firstfruits of the sanctuary, and of the possession of the city over
against the five and twenty thousand of the firstfruits unto the east
border:  toward the sea also over against the five and twenty thousand,
unto the border of the sea, shall likewise be the portion of the
prince:  and the firstfruits of the sanctuary, and the sanctuary of the
temple shall be in the midst thereof.

48:22. And from the possession of the Levites, and from the possession
of the city which are in the midst of the prince's portions:  what shall
be to the border of Juda, and to the border of Benjamin, shall also
belong to the prince.

48:23. And for the rest of the tribes:  from the east side to the west
side, one portion for Benjamin.

48:24. And over against the border of Benjamin, from the east side to
the west side, one portion for Simeon.

48:25. And by the border of Simeon, from the east side to the west
side, one portion for Issachar.

48:26. And by the border of Issachar, from the east side to the west
side, one portion for Zabulon.

48:27. And by the border of Zabulon, from the east side to the side of
the sea, one portion for Gad.

48:28. And by the border of Gad, the south side southward:  and the
border shall be from Thamar, even to the waters of contradiction of
Cades, the inheritance over against the great sea.

48:29. This is the land which you shall divide by lot to the tribes of
Israel:  and these are the portions of them, saith the Lord God.

48:30. And these are the goings out of the city:  on the north side thou
shalt measure four thousand and five hundred.

48:31. And the gates of the city according to the names of the tribes
of Israel, three gates on the north side, the gate of Ruben one, the
gate of Juda one, the gate of Levi one.

48:32. And at the east side, four thousand and five hundred:  and three
gates, the gate of Joseph one, the gate of Benjamin one, the gate of
Dan one.

48:33. And at the south side, thou shalt measure four thousand and five
hundred:  and three gates, the gate of Simeon one, the gate of Issachar
one, the gate of Zabulon one.

48:34. And at the west side, four thousand and five hundred, and their
three gates, the gate of Gad one, the gate of Aser one, the gate of
Nephthali one.

48:35. Its circumference was eighteen thousand:  and the name of the
city from that day, The Lord is there.

The Lord is there. . .  This name is here given to the city, that is, to
the church of Christ:  because the Lord is always with her till the end
of the world.  Matt. 28.20.




THE PROPHECY OF DANIEL



DANIEL, whose name signifies THE JUDGMENT OF GOD, was of the royal
blood of the kings of Juda:  and one of those that were first of all
carried away into captivity.  He was so renowned for wisdom and
knowledge, that it became a proverb among the Babylonians, AS WISE AS
DANIEL (Ezech. 28.3).  And his holiness was so great from his very
childhood, that at the time when he was as yet but a young man, he is
joined by the SPIRIT of GOD with NOE and JOB, as three persons most
eminent for virtue and sanctity, Ezech. 14.  He is not commonly numbered
by the Hebrews among THE PROPHETS:  because he lived at court, and in
high station in the world:  but if we consider his many clear
predictions of things to come, we shall find that no one better
deserves the name and title of A PROPHET:  which also has been given him
by the SON of GOD himself, Matt. 24, Mark 13., Luke 21.



Daniel Chapter 1


Daniel and his companions are taken into the palace of the king of
Babylon:  they abstain from his meat and wine, and succeed better with
pulse and water.  Their excellence and wisdom.

1:1. In the third year of the reign of Joakim, king of Juda,
Nabuchodonosor, king of Babylon, came to Jerusalem, and beseiged it.

1:2. And the Lord delivered into his hands Joakim, the king of Juda,
and part of the vessels of the house of God:  and he carried them away
into the land of Sennaar, to the house of his god, and the vessels he
brought into the treasure house of his god.

His god. . .Bel or Belus, the principal idol of the Chaldeans.

1:3. And the king spoke to Asphenez, the master of the eunuchs, that he
should bring in some of the children of Israel, and of the king's seed,
and of the princes,

1:4. Children in whom there was no blemish, well favoured, and skilful
in all wisdom, acute in knowledge, and instructed in science, and such
as might stand in the king's palace, that he might teach them the
learning, and tongue of the Chaldeans.

1:5. And the king appointed them a daily provision, of his own meat,
and of the wine of which he drank himself, that being nourished three
years, afterwards they might stand before the king.

1:6. Now there was among them of the children of Juda, Daniel, Ananias,
Misael, and Azarias.

1:7. And the master of the eunuchs gave them names:  to Daniel,
Baltassar:  to Ananias, Sidrach:  to Misael, Misach:  and to Azarias,
Abdenago.

1:8. But Daniel purposed in his heart that he would not be defiled with
the king's table, nor with the wine which he drank:  and he requested
the master of the eunuchs that he might not be defiled.

Be defiled, etc. . .Viz., either by eating meat forbidden by the law, or
which had before been offered to idols.

1:9. And God gave to Daniel grace and mercy in the sight of the prince
of the eunuchs.

1:10. And the prince of the eunuchs said to Daniel:  I fear my lord, the
king, who hath appointed you meat and drink:  who if he should see your
faces leaner than those of the other youths, your equals, you shall
endanger my head to the king.

1:11. And Daniel said to Malasar, whom the prince of the eunuchs had
appointed over Daniel, Ananias, Misael, and Azarias:

1:12. Try, I beseech thee, thy servants for ten days, and let pulse be
given us to eat, and water to drink:

Pulse. . .That is, pease, beans, and such like.

1:13. And look upon our faces, and the faces of the children that eat
of the king's meat:  and as thou shalt see, deal with thy servants.

1:14. And when he had heard these words, he tried them for ten days.

1:15. And after ten days, their faces appeared fairer and fatter than
all the children that ate of the king's meat.

1:16. So Malasar took their portions, and the wine that they should
drink:  and he gave them pulse.

1:17. And to these children God gave knowledge, and understanding in
every book, and wisdom:  but to Daniel the understanding also of all
visions and dreams.

1:18. And when the days were ended, after which the king had ordered
they should be brought in:  the prince of the eunuchs brought them in
before Nabuchodonosor.

1:19. And when the king had spoken to them, there were not found among
them all such as Daniel, Ananias, Misael, and Azarias:  and they stood
in the king's presence.

1:20. And in all matters of wisdom and understanding, that the king
enquired of them, he found them ten times better than all the diviners,
and wise men, that were in all his kingdom.

1:21. And Daniel continued even to the first year of king Cyrus.



Daniel Chapter 2


Daniel, by divine revelation, declares the dream of Nabuchodonosor, and
the interpretation of it.  He is highly honoured by the king.

2:1. In the second year of the reign of Nabuchodonosor, Nabuchodonosor
had a dream, and his spirit was terrified, and his dream went out of
his mind.

The second year. . .Viz., from the death of his father Nabopolassar; for
he had reigned before as partner with his father in the empire.

2:2. Then the king commanded to call together the diviners and the wise
men, and the magicians, and the Chaldeans:  to declare to the king his
dreams:  so they came and stood before the king.

The Chaldeeans. . .That is, the astrologers, that pretended to divine by
stars.

2:3. And the king said to them:  I saw a dream:  and being troubled in
mind I know not what I saw.

2:4. And the Chaldeans answered the king in Syriac:  O king, live for
ever:  tell to thy servants thy dream, and we will declare the
interpretation thereof.

2:5. And the king, answering, said to the Chaldeans:  The thing is gone
out of my mind:  unless you tell me the dream, and the meaning thereof,
you shall be put to death, and your houses shall be confiscated.

2:6. but if you tell the dream, and the meaning of it, you shall
receive of me rewards, and gifts, and great honour:  therefore, tell me
the dream, and the interpretation thereof.

2:7. They answered again and said:  Let the king tell his servants the
dream, and we will declare the interpretation of it.

2:8. The king answered and said:  I know for certain, that you seek to
gain time, since you know that the thing is gone from me.

2:9. If, therefore, you tell me not the dream, there is one sentence
concerning you, that you have also framed a lying interpretation, and
full of deceit, to speak before me till the time pass away.  Tell me,
therefore, the dream, that I may know that you also give a true
interpretation thereof.

2:10. Then the Chaldeans answered before the king, and said:  There is
no man upon earth, that can accomplish thy word, O king; neither doth
any king, though great and mighty, ask such a thing of any diviner, or
wise man, or Chaldean.

2:11. For the thing that thou asketh, O king, is difficult:  nor can any
one be found that can shew it before the king, except the gods, whose
conversation is not with men.

2:12. Upon hearing this, the king in fury, and in great wrath,
commanded that all the wise men of Babylon should be put to death.

2:13. And the decree being gone forth, the wise men were slain:  and
Daniel and his companions were sought for, to be put to death.

2:14. Then Daniel inquired concerning the law and the sentence, of
Arioch, the general of the king's army, who was gone forth to kill the
wise men of Babylon.

2:15. And he asked him that had received the orders of the king, why so
cruel a sentence was gone forth from the face of the king.  And when
Arioch had told the matter to Daniel,

2:16. Daniel went in, and desired of the king, that he would give him
time to resolve the question, and declare it to the king.

2:17. And he went into his house, and told the matter to Ananias, and
Misael, and Azarias, his companions:

2:18. To the end that they should ask mercy at the face of the God of
heaven, concerning this secret, and that Daniel and his companions
might not perish with the rest of the wise men of Babylon.

2:19. Then was the mystery revealed to Daniel by a vision in the night:
and Daniel blessed the God of heaven,

2:20. And speaking, he said:  Blessed be the name of the Lord from
eternity and for evermore:  for wisdom and fortitude are his.

2:21. And he changeth times and ages:  taketh away kingdoms, and
establisheth them:  giveth wisdom to the wise, and knowledge to them
that have understanding:

2:22. He revealeth deep and hidden things, and knoweth what is in
darkness:  and light is with him.

2:23. To thee, O God of our fathers, I give thanks, and I praise thee:
because thou hast given me wisdom and strength:  and now thou hast shewn
me what we desired of thee, for thou hast made known to us the king's
discourse.

2:24. After this Daniel went in to Arioch, to whom the king had given
orders to destroy the wise men of Babylon, and he spoke thus to him:
Destroy not the wise men of Babylon:  bring me in before the king, and I
will tell the solution to the king.

2:25. Then Arioch in haste brought in Daniel to the king, and said to
him:  I have found a man of the children of the captivity of Juda, that
will resolve the question to the king.

2:26. The king answered, and said to Daniel, whose name was Baltassar:
Thinkest thou indeed that thou canst tell me the dream that I saw, and
the interpretation thereof?

2:27. And Daniel made answer before the king, and said:  The secret that
the king desireth to know, none of the wise men, or the philosophers,
or the diviners, or the soothsayers, can declare to the king.

2:28. But there is a God in heaven that revealeth mysteries, who hath
shewn to thee, O king Nabuchodonosor, what is to come to pass in the
latter times.  Thy dream, and the visions of thy head upon thy bed, are
these:

2:29. Thou, O king, didst begin to think in thy bed, what should come
to pass hereafter:  and he that revealeth mysteries shewed thee what
shall come to pass.

2:30. To me also this secret is revealed, not by any wisdom that I have
more than all men alive:  but that the interpretation might be made
manifest to the king, and thou mightest know the thought of thy mind.

2:31. Thou, O king, sawest, and behold there was as it were a great
statue:  this statue, which was great and high, tall of stature, stood
before thee, and the look thereof was terrible.

2:32. The head of this statue was of fine gold, but the breast and the
arms of silver, and the belly and the thighs of brass.

2:33. And the legs of iron, the feet part of iron and part of clay.

2:34. Thus thou sawest, till a stone was cut out of a mountain without
hands:  and it struck the statue upon the feet thereof that were of iron
and clay, and broke them in pieces.

2:35. Then was the iron, the clay, the brass, the silver, and the gold
broken to pieces together, and became like the chaff of a summer's
threshing floor, and they were carried away by the wind:  and there was
no place found for them:  but the stone that struck the statue became a
great mountain, and filled the whole earth.

2:36. This is the dream:  we will also tell the interpretation thereof
before thee, O king.

2:37. Thou art a king of kings:  and the God of heaven hath given thee a
kingdom, and strength, and power, and glory:

2:38. And all places wherein the children of men, and the beasts of the
field do dwell:  he hath also given the birds of the air into thy hand,
and hath put all things under thy power:  thou, therefore, art the head
of gold.

2:39. And after thee shall rise up another kingdom, inferior to thee,
of silver:  and another third kingdom of brass, which shall rule over
all the world.

Another kingdom. . .Viz., that of the Medes and Persians.  Ibid.  Third
kingdom. . .Viz., that of Alexander the Great.

2:40. And the fourth kingdom shall be as iron.  As iron breaketh into
pieces, and subdueth all things, so shall that break, and destroy all
these.

The fourth kingdom, etc. . .Some understand this of the successors of
Alexander, the kings of Syria and Egypt, others of the Roman empire,
and its civil wars.

2:41. And whereas thou sawest the feet, and the toes, part of potter's
clay, and part of iron:  the kingdom shall be divided, but yet it shall
take its origin from the iron, according as thou sawest the iron mixed
with the miry clay.

2:42. And as the toes of the feet were part of iron, and part of clay:
the kingdom shall be partly strong, and partly broken.

2:43. And whereas thou sawest the iron mixed with miry clay, they shall
be mingled indeed together with the seed of man, but they shall not
stick fast one to another, as iron cannot be mixed with clay.

2:44. But in the days of those kingdoms, the God of heaven will set up
a kingdom that shall never by destroyed, and his kingdom shall not be
delivered up to another people:  and it shall break in pieces, and shall
consume all these kingdoms:  and itself shall stand for ever.

A kingdom. . .Viz., the kingdom of Christ in the Catholic Church which
cannot be destroyed.

2:45. According as thou sawest, that the stone was cut out of the
mountain without hands, and broke in pieces the clay and the iron, and
the brass, and the silver, and the gold, the great God hath shewn the
king what shall come to pass hereafter, and the dream is true, and the
interpretation thereof is faithful.

2:46. Then king Nabuchodonosor fell on his face, and worshipped Daniel,
and commanded that they should offer in sacrifice to him victims and
incense.

2:47. And the king spoke to Daniel, and said:  Verily, your God is the
God of gods, and Lord of kings, and a revealer of hidden things:  seeing
thou couldst discover this secret.

2:48. Then the king advanced Daniel to a high station, and gave him
many and great gifts:  and he made him governor over all the provinces
of Babylon:  and chief of the magistrates over all the wise men of
Babylon.

2:49. And Daniel requested of the king, and he appointed Sidrach,
Misach, and Abdenago, over the works of the province of Babylon:  but
Daniel himself was in the king's palace.



Daniel Chapter 3


Nabuchodonosor set up a golden statue; which he commands all to adore:
the three children for refusing to do it are cast into the fiery
furnace; but are not hurt by the flames.  Their prayer and canticle of
praise.

3:1. King Nabuchodonosor made a statue of gold, of sixty cubits high,
and six cubits broad, and he set it up in the plain of Dura, of the
province of Babylon.

3:2. Then Nabuchodonosor, the king, sent to call together the nobles,
the magistrates, and the judges, the captains, the rulers, and
governors, and all the chief men of the provinces, to come to the
dedication of the statue which king Nabuchodonosor had set up.

3:3. Then the nobles, the magistrates, and the judges, the captains,
and rulers, and the great men that were placed in authority, and all
the princes of the provinces, were gathered together to come to the
dedication of the statue, which king Nabuchodonosor had set up.  And
they stood before the statue which king Nabuchodonosor had set up.

3:4. Then a herald cried with a strong voice:  To you it is commanded, O
nations, tribes and languages:

3:5. That in the hour that you shall hear the sound of the trumpet, and
of the flute, and of the harp, of the sackbut, and of the psaltery, and
of the symphony, and of all kind of music, ye fall down and adore the
golden statue which king Nabuchodonosor hath set up.

3:6. But if any man shall not fall down and adore, he shall the same
hour be cast into a furnace of burning fire.

3:7. Upon this, therefore, at the time when all the people heard the
sound of the trumpet, the flute, and the harp, of the sackbut, and the
psaltery, of the symphony, and of all kind of music, all the nations,
tribes, and languages fell down and adored the golden statue which king
Nabuchodonosor had set up.

3:8. And presently at that very time some Chaldeans came and accused
the Jews,

3:9. And said to king Nabuchodonosor:  O king, live for ever:

3:10. Thou, O king, hast made a decree, that every man that shall hear
the sound of the trumpet, the flute, and the harp, of the sackbut, and
the psaltery, of the symphony, and of all kind of music, shall
prostrate himself, and adore the golden statue:

3:11. And that if any man shall not fall down and adore, he should be
cast into a furnace of burning fire.

3:12. Now there are certain Jews, whom thou hast set over the works of
the province of Babylon, Sidrach, Misach, and Abdenago:  these men, O
king, have slighted thy decree:  they worship not thy gods, nor do they
adore the golden statue which thou hast set up.

3:13. Then Nabuchodonosor in fury, and in wrath, commanded that
Sidrach, Misach, ad Abdenago should be brought:  who immediately were
brought before the king.

3:14. And Nabuchodonosor, the king, spoke to them, and said:  Is it
true, O Sidrach, Misach, and Abdenago, that you do not worship my gods,
nor adore the golden statue that I have set up?

3:15. Now, therefore, if you be ready, at what hour soever, you shall
hear the sound of the trumpet, flute, harp, sackbut, and psaltery, and
symphony, and of all kind of music, prostrate yourselves, and adore the
statue which I have made:  but if you do not adore, you shall be cast
the same hour into the furnace of burning fire:  and who is the God that
shall deliver you out of my hand?

3:16. Sidrach, Misach, and Abdenago, answered, and said to king
Nabuchodonosor:  We have no occasion to answer thee concerning this
matter.

3:17. For behold our God, whom we worship, is able to save us from the
furnace of burning fire, and to deliver us out of thy hands, O king.

3:18. But if he will not, be it known to thee, O king, that we will not
worship thy gods, nor adore the golden statue which thou hast set up.

3:19. Then was Nabuchodonosor filled with fury:  and the countenance of
his face was changed against Sidrach, Misach, and Abdenago, and he
commanded that the furnace should be heated seven times more than it
had been accustomed to be heated.

3:20. And he commanded the strongest men that were in his army, to bind
the feet of Sidrach, Misach, and Abdenago, and to cast them into the
furnace of burning fire.

3:21. And immediately these men were bound, and were cast into the
furnace of burning fire, with their coats, and their caps, and their
shoes, and their garments.

3:22. For the king's commandment was urgent, and the furnace was heated
exceedingly.  And the flame of the fire slew those men that had cast in
Sidrach, Misach, and Abdenago.

3:23. But these three men, that is, Sidrach, Misach, and Abdenago, fell
down bound in the midst of the furnace of burning fire.

3:24. And they walked in the midst of the flame, praising God, and
blessing the Lord.

And they walked, etc. . .Here St. Jerome takes notice, that from this
verse, to ver. 91, was not in the Hebrew in his time.  But as it was in
all the Greek Bibles, (which were originally translated from the
Hebrew,) it is more than probable that it had been formerly in the
Hebrew or rather in the Chaldaic, in which the book of Daniel was
written.  But this is certain:  that it is, and has been of old, received
by the church, and read as canonical scripture in her liturgy, and
divine offices.

3:25. Then Azarias standing up, prayed in this manner, and opening his
mouth in the midst of the fire, he said:

3:26. Blessed art thou, O Lord, the God of our fathers, and thy name is
worthy of praise, and glorious for ever:

3:27. For thou art just in all that thou hast done to us, and all thy
works are true, and thy ways right, and all thy judgments true.

3:28. For thou hast executed true judgments in all the things that thou
hast brought upon us, and upon Jerusalem, the holy city of our fathers:
for according to truth and judgment, thou hast brought all these things
upon us for our sins.

3:29. For we have sinned, and committed iniquity, departing from thee:
and we have trespassed in all things:

3:30. And we have not hearkened to thy commandments, nor have we
observed nor done as thou hadst commanded us, that it might go well
with us.

3:31. Wherefore, all that thou hast brought upon us, and every thing
that thou hast done to us, thou hast done in true judgment:

3:32. And thou hast delivered us into the hands of our enemies that are
unjust, and most wicked, and prevaricators, and to a king unjust, and
most wicked beyond all that are upon the earth.

3:33. And now we cannot open our mouths:  we are become a shame, and a
reproach to thy servants, and to them that worship thee.

3:34. Deliver us not up for ever, we beseech thee, for thy name's sake,
and abolish not thy covenant.

3:35. And take not away thy mercy from us, for the sake of Abraham, thy
beloved, and Isaac, thy servant, and Israel, thy holy one:

3:36. To whom thou hast spoken, promising that thou wouldst multiply
their seed as the stars of heaven, and as the sand that is on the sea
shore.

3:37. For we, O Lord, are diminished more than any nation, and are
brought low in all the earth this day for our sins.

3:38. Neither is there at this time prince, or leader, or prophet, or
holocaust, or sacrifice, or oblation, or incense, or place of first
fruits before thee,

3:39. That we may find thy mercy:  nevertheless, in a contrite heart and
humble spirit let us be accepted.

3:40. As in holocausts of rams, and bullocks, and as in thousands of
fat lambs:  so let our sacrifice be made in thy sight this day, that it
may please thee:  for there is no confusion to them that trust in thee.

3:41. And now we follow thee with all our heart, and we fear thee, and
seek thy face.

3:42. Put us not to confusion, but deal with us according to thy
meekness, and according to the multitude of thy mercies.

3:43. And deliver us, according to thy wonderful works, and give glory
to thy name, O Lord:

3:44. And let all them be confounded that shew evils to thy servants,
let them be confounded in all thy might, and let their strength be
broken:

3:45. And let them know that thou art the Lord, the only God, and
glorious over all the world.

3:46. Now the king's servants that had cast them in, ceased not to heat
the furnace with brimstone and tow, and pitch, and dry sticks,

3:47. And the flame mounted up above the furnace nine and forth cubits:

3:48. And it broke forth, and burnt such of the Chaldeans as it found
near the furnace.

3:49. But the angel of the Lord went down with Azarias and his
companions into the furnace:  and he drove the flame of the fire out of
the furnace,

3:50. And made the midst of the furnace like the blowing of a wind
bringing dew, and the fire touched them not at all, nor troubled them,
nor did them any harm.

3:51. Then these three, as with one mouth, praised and glorified and
blessed God, in the furnace, saying:

3:52. Blessed art thou, O Lord, the God of our fathers; and worthy to
be praised, and glorified, and exalted above all for ever:  and blessed
is the holy name of thy glory:  and worthy to be praised and exalted
above all, in all ages.

3:53. Blessed art thou in the holy temple of thy glory:  and exceedingly
to be praised and exalted above all for ever.

3:54 Blessed art thou on the throne of thy kingdom, and exceedingly to be
praised, and exalted above all forever.

3:55. Blessed art thou that beholdest the depths, and sittest upon the
cherubims:  and worthy to be praised and exalted above all for ever.

3:56. Blessed art thou in the firmament of heaven:  and worthy of
praise, and glorious for ever.

3:57. All ye works of the Lord, bless the Lord:  praise and exalt him
above all for ever.

3:58. O ye angels of the Lord, bless the Lord:  praise and exalt him
above all for ever.

3:59. O ye heavens, bless the Lord:  praise and exalt him above all for
ever.

3:60. O all ye waters that are above the heavens, bless the Lord:
praise and exalt him above all for ever.

3:61. O all ye powers of the Lord, bless the Lord:  praise and exalt him
above all for ever.

3:62. O ye sun and moon, bless the Lord:  praise and exalt him above all
for ever.

3:63. O ye stars of heaven, bless the Lord:  praise and exalt him above
all for ever.

3:64. O every shower and dew, bless ye the Lord:  praise and exalt him
above all for ever.

3:65. O all ye spirits of God, bless the Lord:  praise and exalt him
above all for ever.

3:66. O ye fire and heat, bless the Lord:  praise and exalt him above
all for ever.

3:67. O ye cold and heat, bless the Lord, praise and exalt him above
all for ever.

3:68. O ye dews and hoar frost, bless the Lord:  praise and exalt him
above all for ever.

3:69. O ye frost and cold, bless the Lord:  praise and exalt him above
all for ever.

3:70. O ye ice and snow, bless the Lord:  praise and exalt him above all
for ever.

3:71. O ye nights and days, bless the Lord:  praise and exalt him above
all for ever.

3:72. O ye light and darkness, bless the Lord:  praise and exalt him
above all for ever.

3:73. O ye lightnings and clouds, bless the Lord:  praise and exalt him
above all for ever.

3:74. O let the earth bless the Lord:  let it praise and exalt him above
all for ever.

3:75 O ye mountains and hills, bless the Lord: praise and exalt him above
all for ever.

3:76. O all ye things that spring up in the earth, bless the Lord:
praise and exalt him above all for ever.

3:77. O ye fountains, bless the Lord:  praise and exalt him above all
for ever.

3:78. O ye seas and rivers, bless the Lord:  praise and exalt him above
all for ever.

3:79. O ye whales, and all that move in the waters, bless the Lord:
praise and exalt him above all for ever.

3:80. O all ye fowls of the air, bless the Lord:  praise and exalt him
above all for ever.

3:81. O all ye beasts and cattle, bless the Lord:  praise and exalt him
above all for ever.

3:82. O ye sons of men, bless the Lord:  praise and exalt him above all
for ever.

3:83. O let Israel bless the Lord:  let them praise and exalt him above
all for ever.

3:84. O ye priests of the Lord, bless the Lord:  praise and exalt him
above all for ever.

3:85. O ye servants of the Lord, bless the Lord:  praise and exalt him
above all for ever.

3:86. O ye spirits and souls of the just, bless the Lord:  praise and
exalt him above all for ever.

3:87. O ye holy and humble of heart, bless the Lord:  praise and exalt
him above all for ever.

3:88. O Ananias, Azarias, Misael, bless ye the Lord:  praise and exalt
him above all for ever.  For he hath delivered us from hell, ad saved us
out of the hand of death, and delivered us out of the midst of the
burning flame, and saved us out of the midst of the fire.

3:89. O give thanks to the Lord, because he is good:  because his mercy
endureth for ever and ever.

3:90. O all ye religious, bless the Lord, the God of gods:  praise him,
and give him thanks, because his mercy endureth for ever and ever.

3:91. Then Nabuchodonosor, the king, was astonished, and rose up in
haste, and said to his nobles:  Did we not cast three men bound into the
midst of the fire?  They answered the king, and said:  True, O king.

3:92. He answered, and said:  Behold, I see four men loose, and walking
in the midst of the fire, and there is no hurt in them, and the form of
the fourth is like the son of God.

3:93. Then Nabuchodonosor came to the door of the burning fiery
furnace, and said:  Sidrach, Misach, and Abdenago, ye servants of the
most high God, go ye forth, and come.  And immediately Sidrach, Misach,
and Abdenago, went out from the midst of the fire.

3:94. And the nobles, and the magistrates, and the judges, and the
great men of the king, being gathered together, considered these men,
that the fire had no power on their bodies, and that not a hair of
their head had been singed, nor their garments altered, nor the smell
of the fire had passed on them.

3:95. Then Nabuchodonosor breaking forth, said:  Blessed be the God of
them, to wit, of Sidrach, Misach, and Abdenago, who hath sent his
angel, and delivered his servants that believed in him:  and they
changed the king's word, and delivered up their bodies, that they might
not serve nor adore any god except their own God.

3:96. By me, therefore, this decree is made:  That every people, tribe,
and tongue, which shall speak blasphemy against the God of Sidrach,
Misach, and Abdenago, shall be destroyed, and their houses laid waste:
for there is no other God that can save in this manner.

3:97. Then the king promoted Sidrach, Misach, and Abdenago, in the
province of Babylon.

3:98. Nabuchodonosor, the king, to all peoples, nations, and tongues,
that dwell in all the earth, peace be multiplied unto you.

Nabuchodonosor, etc. . .These last three verses are a kind of preface to
the following chapter, which is written in the style of an epistle from
the king.

3:99. The most high God hath wrought signs and wonders towards me.  It
hath seemed good to me, therefore, to publish

3:100. His signs, because they are great:  and his wonders, because they
are mighty:  and his kingdom is an everlasting kingdom, and his power to
all generations.



Daniel Chapter 4


Nabuchodonosor's dream, by which the judgments of God are denounced
against him for his pride, is interpreted by Daniel, and verified by
the event.

4:1. I, Nabuchodonosor, was at rest in my house, and flourishing in my
palace:

4:2. I saw a dream that affrighted me:  and my thoughts in my bed, and
the visions of my head, troubled me.

4:3. Then I set forth a decree, that all the wise men of Babylon should
be brought in before me, and that they should shew me the
interpretation of the dream.

4:4. Then came in the diviners, the wise men, the Chaldeans, and the
soothsayers, and I told the dream before them:  but they did not shew me
the interpretation thereof.

4:5. Till their colleague, Daniel, came in before me, whose name is
Baltassar, according to the name of my god, who hath in him the spirit
of the holy gods:  and I told the dream before him.

Baltassar, according to the name of my god. . .He says this, because the
name of Baltassar, or Belteshazzar, is derived from the name of Bel,
the chief god of the Babylonians.

4:6. Baltassar, prince of the diviners, because I know that thou hast
in thee the spirit of the holy gods, and that no secret is impossible
to thee, tell me the visions of my dreams that I have seen, and the
interpretation of them?

4:7. This was the vision of my head in my bed:  I saw, and behold a tree
in the midst of the earth, and the height thereof was exceeding great.

4:8. The tree was great and strong, and the height thereof reached unto
heaven:  the sight thereof was even to the ends of all the earth.

4:9. Its leaves were most beautiful, and its fruit exceeding much:  and
in it was food for all:  under it dwelt cattle and beasts, and in the
branches thereof the fowls of the air had their abode:  and all flesh
did eat of it.

4:10. I saw in the vision of my head upon my bed, and behold a watcher,
and a holy one came down from heaven.

A watcher. . .A vigilant angel, perhaps the guardian of Israel.

4:11. He cried aloud, and said thus:  Cut down the tree, and chop off
the branches thereof:  shake off its leaves, and scatter its fruits:  let
the beasts fly away that are under it, and the birds from its branches.

4:12. Nevertheless, leave the stump of its roots in the earth, and let
it be tied with a band of iron and of brass, among the grass, that is
without, and let it be wet with the dew of heaven, and let its portion
be with the wild beasts in the grass of the earth.

4:13. Let his heart be changed from man's, and let a beast's heart be
given him:  and let seven times pass over him.

Let his heart be changed, etc. . .It does not appear by scripture that
Nabuchodonosor was changed from human shape; much less that he was
changed into an ox; but only that he lost his reason, and became mad;
and in this condition remained abroad in the company of beasts, eating
grass like an ox, till his hair grew in such manner as to resemble the
feathers of eagles, and his nails to be like birds' claws.

4:14. This is the decree by the sentence of the watchers, and the word
and demand of the holy ones:  till the living know, that the most High
ruleth in the kingdom of men:  and he will give it to whomsoever it
shall please him, and he will appoint the basest man over it.

4:15. I, king Nabuchodonosor, saw this dream:  thou, therefore, O
Baltassar, tell me quickly the interpretation:  for all the wise men of
my kingdom are not able to declare the meaning of it to me:  but thou
art able, because the spirit of the holy gods is in thee.

4:16. Then Daniel, whose name was Baltassar, began silently to think
within himself for about one hour:  and his thought troubled him.  But
the king answering, said:  Baltassar, let not the dream and the
interpretation thereof trouble thee.  Baltassar answered, and said:  My
lord, the dream be to them that hate thee, and the interpretation
thereof to thy enemies.

4:17. The tree which thou sawest, which was high and strong, whose
height reached to the skies, and the sight thereof into all the earth:

4:18. And the branches thereof were most beautiful, and its fruit
exceeding much, and in it was food for all, under which the beasts of
the field dwelt, and the birds of the air had their abode in its
branches.

4:19. It is thou, O king, who art grown great, and become mighty:  for
thy greatness hath grown, and hath reached to heaven, and thy power
unto the ends of the earth.

4:20. And whereas the king saw a watcher, and a holy one come down from
heaven, and say:  Cut down the tree, and destroy it, but leave the stump
of the roots thereof in the earth, and let it be bound with iron and
brass, among the grass without, and let it be sprinkled with the dew of
heaven, and let his feeding be with the wild beasts, till seven times
pass over him.

4:21. This is the interpretation of the sentence of the most High,
which is come upon my lord, the king.

4:22. They shall cast thee out from among men, and thy dwelling shall
be with cattle, and with wild beasts, and thou shalt eat grass, as an
ox, and shalt be wet with the dew of heaven:  and seven times shall pass
over thee, till thou know that the most High ruleth over the kingdom of
men, and giveth it to whomsoever he will.

4:23. But whereas he commanded, that the stump of the roots thereof,
that is, of the tree, should be left:  thy kingdom shall remain to thee,
after thou shalt have known that power is from heaven.

4:24. Wherefore, O king, let my counsel be acceptable to thee, and
redeem thou thy sins with alms, and thy iniquities with works of mercy
to the poor:  perhaps he will forgive thy offences.

4:25. All these things came upon king Nabuchodonosor.

4:26. At the end of twelve months he was walking in the palace of
Babylon.

4:27. And the king answered, and said:  Is not this the great Babylon,
which I have built, to be the seat of the kingdom, by the strength of
my power, and in the glory of my excellence?

4:28. And while the word was yet in the king's mouth, a voice came down
from heaven:  To thee, O king Nabuchodonosor, it is said:  Thy kingdom
shall pass from thee.

4:29. And they shall cast thee out from among men, and thy dwelling
shall be with cattle and wild beasts:  thou shalt eat grass like an ox,
and seven times shall pass over thee, till thou know that the most High
ruleth in the kingdom of men, and giveth it to whomsoever he will.

4:30. The same hour the word was fulfilled upon Nabuchodonosor, and he
was driven away from among men, and did eat grass, like an ox, and his
body was wet with the dew of heaven:  till his hairs grew like the
feathers of eagles, and his nails like birds' claws.

4:31. Now at the end of the days, I, Nabuchodonosor, lifted up my eyes
to heaven, and my sense was restored to me:  and I blessed the most
High, and I praised and glorified him that liveth for ever:  for his
power is an everlasting power, and his kingdom is to all generations.

4:32. And all the inhabitants of the earth are reputed as nothing
before him:  for he doth according to his will, as well with the powers
of heaven, as among the inhabitants of the earth:  and there is none
that can resist his hand, and say to him:  Why hast thou done it?

4:33. At the same time my sense returned to me, and I came to the
honour and glory of my kingdom:  and my shape returned to me:  and my
nobles, and my magistrates, sought for me, and I was restored to my
kingdom:  and greater majesty was added to me.

4:34. Therefore I, Nabuchodonosor, do now praise, and magnify, and
glorify the King of heaven:  because all his works are true, and his
ways judgments, and them that walk in pride he is able to abase.

I, Nabuchodonosor, do now, etc. . .From this place some commentators
infer that this king became a true convert, and dying not long after,
was probably saved.



Daniel Chapter 5


Baltasar's profane banquet:  his sentence is denounced by a handwriting
on the wall, which Daniel reads and interprets.

5:1. Baltasar, the king, made a great feast for a thousand of his
nobles:  and every one drank according to his age.

Baltasar. . .He is believed to be the same as Nabonydus, the last of the
Chaldean kings, grandson to Nabuchodonosor.  He is called his son, ver.
2, 11, etc., according to the style of the scriptures, because he was a
descendant from him.

5:2. And being now drunk, he commanded that they should bring the
vessels of gold and silver, which Nabuchodonosor, his father, had
brought away out of the temple, that was in Jerusalem, that the king
and his nobles, and his wives, and his concubines, might drink in them.

5:3. Then were the golden and silver vessels brought, which he had
brought away out of the temple that was in Jerusalem:  and the king and
his nobles, his wives, and his concubines, drank in them.

5:4. They drank wine, and praised their gods of gold, and of silver, of
brass, of iron, and of wood, and of stone.

5:5. In the same hour there appeared fingers, as it were of the hand of
a man, writing over against the candlestick, upon the surface of the
wall of the king's palace:  and the king beheld the joints of the hand
that wrote.

5:6. Then was the king's countenance changed, and his thoughts troubled
him:  and the joints of his loins were loosed, and his knees struck one
against the other.

5:7. And the king cried out aloud to bring in the wise men, the
Chaldeans, and the soothsayers.  And the king spoke, and said to the
wise men of Babylon:  Whosoever shall read this writing, and shall make
known to me the interpretation thereof, shall be clothed with purple,
and shall have a golden chain on his neck, and shall be the third man
in my kingdom.

5:8. Then came in all the king's wise men, but they could neither read
the writing, nor declare the interpretation to the king.

5:9. Wherewith king Baltasar was much troubled, and his countenance was
changed:  and his nobles also were troubled.

5:10. Then the queen, on occasion of what had happened to the king, and
his nobles, came into the banquet-house:  and she spoke, and said:  O
king, live for ever:  let not thy thoughts trouble thee, neither let thy
countenance be changed.

The queen. . .Not the wife, but the mother of the king.

5:11. There is a man in thy kingdom that hath the spirit of the holy
gods in him:  and in the days of thy father knowledge and wisdom were
found in him:  for king Nabuchodonosor, thy father, appointed him prince
of the wise men, enchanters, Chaldeans, and soothsayers, thy father, I
say, O king:

5:12. Because a greater spirit, and knowledge, and understanding, and
interpretation of dreams, and shewing of secrets, and resolving of
difficult things, were found in him, that is, in Daniel:  whom the king
named Baltassar.  Now, therefore, let Daniel be called for, and he will
tell the interpretation.

5:13. Then Daniel was brought in before the king.  And the king spoke,
and said to him:  Art thou Daniel, of the children of the captivity of
Juda, whom my father, the king, brought out of Judea?

5:14. I have heard of thee, that thou hast the spirit of the gods, and
excellent knowledge, and understanding, and wisdom are found in thee.

5:15. And now the wise men, the magicians, have come in before me, to
read this writing, and shew me the interpretation thereof; and they
could not declare to me the meaning of this writing.

5:16. But I have heard of thee, that thou canst interpret obscure
things, and resolve difficult things:  now if thou art able to read the
writing, and to shew me the interpretation thereof, thou shalt be
clothed with purple, and shalt have a chain of gold about thy neck, and
shalt be the third prince in my kingdom.

5:17. To which Daniel made answer, and said before the king:  thy
rewards be to thyself, and the gifts of thy house give to another:  but
the writing I will read to thee, O king, and shew thee the
interpretation thereof.

5:18. O king, the most high God gave to Nabuchodonosor, thy father, a
kingdom, and greatness, and glory, and honour.

5:19. And for the greatness that he gave to him, all people, tribes,
and languages trembled, and were afraid of him:  whom he would, he slew:
and whom he would, he destroyed:  and whom he would, he set up:  and whom
he would, he brought down.

5:20. But when his heart was lifted up, and his spirit hardened unto
pride, he was put down from the throne of his kingdom, and his glory
was taken away.

5:21. And he was driven out from the sons of men, and his heart was
made like the beasts, and his dwelling was with the wild asses, and he
did eat grass like an ox, and his body was wet with the dew of heaven:
till he knew that the most High ruled in the kingdom of men, and that
he will set over it whomsoever it shall please him.

5:22. Thou also, his son, O Baltasar, hast not humbled thy heart,
whereas thou knewest all these things:

5:23. But hast lifted thyself up against the Lord of heaven:  and the
vessels of his house have been brought before thee:  and thou, and thy
nobles, and thy wives, and thy concubines, have drunk wine in them:  and
thou hast praised the gods of silver, and of gold, and of brass, of
iron, and of wood, and of stone, that neither see, nor hear, nor feel:
but the God who hath thy breath in his hand, and all thy ways, thou
hast not glorified.

5:24. Wherefore, he hath sent the part of the hand which hath written
this that is set down.

5:25. And this is the writing that is written:  MANE, THECEL, PHARES.

5:26. And this is the interpretation of the word.  MANE:  God hath
numbered thy kingdom, and hath finished it.

5:27. THECEL:  thou art weighed in the balance, and art found wanting.

5:28. PHARES:  thy kingdom is divided, and is given to the Medes and
Persians.

5:29. Then by the king's command, Daniel was clothed with purple, and a
chain of gold was put about his neck:  and it was proclaimed of him that
he had power as the third man in the kingdom.

5:30. The same night Baltasar, the Chaldean king, was slain.

5:31. And Darius, the Mede, succeeded to the kingdom, being threescore
and two years old.

Darius. . .He is called Cyaxares by the historians; and was the son of
Astyages, and uncle to Cyrus.



Daniel Chapter 6


Daniel is promoted by Darius:  his enemies procure a law forbidding
prayer; for the transgression of this law Daniel is cast into the
lions' den:  but miraculously delivered.

6:1. It seemed good to Darius, and he appointed over the kingdom a
hundred and twenty governors, to be over his whole kingdom.

6:2. And three princes over them of whom Daniel was one:  that the
governors might give an account to them, and the king might have no
trouble.

6:3. And Daniel excelled all the princes, and governors:  because a
greater spirit of God was in him.

6:4. And the king thought to set him over all the kingdom; whereupon
the princes, and the governors, sought to find occasion against Daniel,
with regard to the king:  and they could find no cause, nor suspicion,
because he was faithful, and no fault, nor suspicion was found in him.

6:5. Then these men said:  We shall not find any occasion against this
Daniel, unless perhaps concerning the law of his God.

6:6. Then the princes, and the governors, craftily suggested to the
king, and spoke thus unto him:  King Darius, live for ever:

6:7. All the princes of the kingdom, the magistrates, and governors,
the senators, and judges, have consulted together, that an imperial
decree, and an edict be published:  That whosoever shall ask any
petition of any god, or man, for thirty days, but of thee, O king,
shall be cast into the den of the lions.

6:8. Now, therefore, O king, confirm the sentence, and sign the decree:
that what is decreed by the Medes and Persians may not be altered, nor
any man be allowed to transgress it.

6:9. So king Darius set forth the decree, and established it.

6:10. Now, when Daniel knew this, that is to say, that the law was
made, he went into his house:  and opening the windows in his upper
chamber towards Jerusalem, he knelt down three times a day, and adored
and gave thanks before his God, as he had been accustomed to do before.

6:11. Wherefore those men carefully watching him, found Daniel praying
and making supplication to his God.

6:12. And they came and spoke to the king concerning the edict:  O king,
hast thou not decreed, that every man that should make a request to any
of the gods, or men, for thirty days, but to thyself, O king, should be
cast into the den of the lions?  And the king answered them, saying:  The
word is true, according to the decree of the Medes and Persians, which
it is not lawful to violate.

6:13. Then they answered, and said before the king:  Daniel, who is of
the children of the captivity of Juda, hath not regarded thy law, nor
the decree that thou hast made:  but three times a day he maketh his
prayer.

6:14. Now when the king had heard these words, he was very much
grieved, and in behalf of Daniel he set his heart to deliver him, and
even till sunset he laboured to save him.

6:15. But those men perceiving the king's design, said to him:  Know
thou, O king, that the law of the Medes and Persians is, that no decree
which the king hath made, may be altered.

6:16. Then the king commanded, and they brought Daniel, and cast him
into the den of the lions.  And the king said to Daniel:  Thy God, whom
thou always servest, he will deliver thee.

6:17. And a stone was brought, and laid upon the mouth of the den:
which the king sealed with his own ring, and with the ring of his
nobles, that nothing should be done against Daniel.

6:18. And the king went away to his house, and laid himself down
without taking supper, and meat was not set before him, and even sleep
departed from him.

6:19. Then the king rising very early in the morning, went in haste to
the lions' den:

6:20. And coming near to the den, cried with a lamentable voice to
Daniel, and said to him:  Daniel, servant of the living God, hath thy
God, whom thou servest always, been able, thinkest thou, to deliver
thee from the lions?

6:21. And Daniel answering the king, said:  O king, live for ever:

6:22. My God hath sent his angel, and hath shut up the mouths of the
lions, and they have not hurt me:  forasmuch as before him justice hath
been found in me:  yea, and before thee, O king, I have done no offence.

6:23. Then was the king exceeding glad for him, and he commanded that
Daniel should be taken out of the den:  and Daniel was taken out of the
den, and no hurt was found in him, because he believed in his God.

6:24. And by the king's commandment, those men were brought that had
accused Daniel:  and they were cast into the lions' den, they and their
children, and their wives:  and they did not reach the bottom of the
den, before the lions caught them, and broke all their bones in pieces.

6:25. Then king Darius wrote to all people, tribes, and languages,
dwelling in the whole earth:  PEACE be multiplied unto you.

6:26. It is decreed by me, that in all my empire and my kingdom, all
men dread and fear the God of Daniel.  For he is the living and eternal
God for ever:  and his kingdom shall not be destroyed, and his power
shall be for ever.

6:27. He is the deliverer, and saviour, doing signs and wonders in
heaven, and in earth:  who hath delivered Daniel out of the lions' den.

6:28. Now Daniel continued unto the reign of Darius, and the reign of
Cyrus, the Persian.



Daniel Chapter 7


Daniel's vision of the four beasts, signifying four kingdoms:  of God
sitting on his throne:  and of the opposite kingdoms of Christ and
Antichrist.

7:1. In the first year of Baltasar, king of Babylon, Daniel saw a
dream:  and the vision of his head was upon his bed:  and writing the
dream, he comprehended it in a few words:  and relating the sum of it in
short, he said:

7:2. I saw in my vision by night, and behold the four winds of the
heavens strove upon the great sea.

7:3. And four great beasts, different one from another, came up out of
the sea.

Four great beasts. . .Viz., the Chaldean, Persian, Grecian, and Roman
empires.  But some rather choose to understand the fourth beast of the
successors of Alexander the Great, more especially of them that reigned
in Asia and Syria.

7:4. The first was like a lioness, and had the wings of an eagle:  I
beheld till her wings were plucked off, and she was lifted up from the
earth, and stood upon her feet as a man, and the heart of a man was
given to her.

7:5. And behold another beast, like a bear, stood up on one side:  and
there were three rows in the mouth thereof, and in the teeth thereof,
and thus they said to it:  Arise, devour much flesh.

7:6. After this I beheld, and lo, another like a leopard, and it had
upon it four wings, as of a fowl, and the beast had four heads, and
power was given to it.

7:7. After this I beheld in the vision of the night, and lo, a fourth
beast, terrible and wonderful, and exceeding strong, it had great iron
teeth, eating and breaking in pieces, and treading down the rest with
his feet:  and it was unlike to the other beasts which I had seen before
it, and had ten horns.

Ten horns. . .That is, ten kingdoms, (as Apoc. 17.12,) among which the
empire of the fourth beast shall be parcelled.  Or ten kings of the
number of the successors of Alexander; as figures of such as shall be
about the time of Antichrist.

7:8. I considered the horns, and behold another little horn sprung out
of the midst of them:  and three of the first horns were plucked up at
the presence thereof:  and behold eyes like the eyes of a man were in
this horn, and a mouth speaking great things.

Another little horn. . .This is commonly understood of Antichrist.  It
may also be applied to that great persecutor Antiochus Epiphanes, as a
figure of Antichrist.

7:9. I beheld till thrones were placed, and the ancient of days sat:
his garment was white as snow, and the hair of his head like clean
wool:  his throne like flames of fire:  the wheels of it like a burning
fire.

7:10. A swift stream of fire issued forth from before him:  thousands of
thousands ministered to him, and ten thousand times a hundred thousand
stood before him:  the judgment sat, and the books were opened.

7:11. I beheld, because of the voice of the great words which that horn
spoke:  and I saw that the beast was slain, and the body thereof was
destroyed, and given to the fire to be burnt:

7:12. And that the power of the other beasts was taken away:  and that
times of life were appointed them for a time, and a time.

7:13. I beheld, therefore, in the vision of the night, and lo, one like
the Son of man came with the clouds of heaven, and he came even to the
ancient of days:  and they presented him before him.

7:14. And he gave him power, and glory, and a kingdom:  and all peoples,
tribes, and tongues shall serve him:  his power is an everlasting power
that shall not be taken away:  and his kingdom that shall not be
destroyed.

7:15. My spirit trembled; I, Daniel, was affrighted at these things,
and the visions of my head troubled me.

7:16. I went near to one of them that stood by, and asked the truth of
him concerning all these things, and he told me the interpretation of
the words, and instructed me:

7:17. These four great beasts, are four kingdoms, which shall arise out
of the earth.

7:18. But the saints of the most high God shall take the kingdom:  and
they shall possess the kingdom for ever and ever.

7:19. After this I would diligently learn concerning the fourth beast,
which was very different from all, and exceeding terrible:  his teeth
and claws were of iron:  he devoured and broke in pieces, and the rest
he stamped upon with his feet:

7:20. And concerning the ten horns that he had on his head:  and
concerning the other that came up, before which three horns fell:  and
of that horn that had eyes, and a mouth speaking great things, and was
greater than the rest.

7:21. I beheld, and lo, that horn made war against the saints, and
prevailed over them,

7:22. Till the ancient of days came and gave judgment to the saints of
the most High, and the time came, and the saints obtained the kingdom.

7:23. And thus he said:  The fourth beast shall be the fourth kingdom
upon earth, which shall be greater than all the kingdoms, and shall
devour the whole earth, and shall tread it down, and break it in
pieces.

7:24. And the ten horns of the same kingdom, shall be ten kings:  and
another shall rise up after them, and he shall be mightier than the
former, and he shall bring down three kings.

7:25. And he shall speak words against the High One, and shall crush
the saints of the most High:  and he shall think himself able to change
times and laws, and they shall be delivered into his hand until a time,
and times, and half a time.

A time, and times, and half a time. . .That is, three years and a half;
which is supposed to be the length of the duration of the persecution
of Antichrist.

7:26. And a judgment shall sit, that his power may be taken away, and
be broken in pieces, and perish even to the end.

7:27. And that the kingdom, and power, and the greatness of the
kingdom, under the whole heaven, may be given to the people of the
saints of the most High:  whose kingdom is an everlasting kingdom, and
all kings shall serve him, and shall obey him.

7:28. Hitherto is the end of the word.  I, Daniel, was much troubled
with my thoughts, and my countenance was changed in me:  but I kept the
word in my heart.



Daniel Chapter 8


Daniel's vision of the ram and the he goat interpreted by the angel
Gabriel.

8:1. In the third year of the reign of king Baltasar, a vision appeared
to me.  I, Daniel, after what I had seen in the beginning,

8:2. Saw in my vision when I was in the castle of Susa, which is in the
province of Elam:  and I saw in the vision that I was over the gate of
Ulai.

8:3. And I lifted up my eyes, and saw:  and behold a ram stood before
the water, having two high horns, and one higher than the other, and
growing up.  Afterward

A ram. . .The empire of the Medes and Persians.

8:4. I saw the ram pushing with his horns against the west, and against
the north, and against the south:  and no beasts could withstand him,
nor be delivered out of his hand:  and he did according to his own will,
and became great.

8:5. And I understood:  and behold a he goat came from the west on the
face of the whole earth, and he touched not the ground, and the he goat
had a notable horn between his eyes.

A he goat. . .The empire of the Greeks, or Macedonians.  Ibid.  He
touched not the ground. . .He conquered all before him, with so much
rapidity, that he seemed rather to fly, than to walk upon the
earth.--Ibid.  A notable horn. . .Alexander the Great.

8:6. And he went up to the ram that had the horns, which I had seen
standing before the gate, and he ran towards him in the force of his
strength.

8:7. And when he was come near the ram, he was enraged against him, and
struck the ram:  and broke his two horns, and the ram could not
withstand him:  and when he had cast him down on the ground, he stamped
upon him, and none could deliver the ram out of his hand.

8:8. And the he goat became exceeding great:  and when he was grown, the
great horn was broken, and there came up four horns under it towards
the four winds of heaven.

Four horns. . .Seleucus, Antigonus, Philip, and Ptolemeus, the
successors of Alexander, who divided his empire among them.

8:9. And out of one of them came forth a little horn:  and it became
great against the south, and against the east, and against the
strength.

A little horn. . .Antiochus Epiphanes, a descendant of Seleucus.  He grew
against the south, and the east, by his victories over the kings of
Egypt and Armenia:  and against the strength, that is, against Jerusalem
and the people of God.

8:10. And it was magnified even unto the strength of heaven:  and it
threw down of the strength, and of the stars, and trod upon them.

Unto the strength of heaven. . .or, against the strength of heaven.  So
are here called the army of the Jews, the people of God.

8:11. And it was magnified even to the prince of the strength:  and it
took away from him the continual sacrifice, and cast down the place of
his sanctuary.

8:12. And strength was given him against the continual sacrifice,
because of sins:  and truth shall be cast down on the ground, and he
shall do and shall prosper.

8:13. And I heard one of the saints speaking, and one saint said to
another I know not to whom, that was speaking:  How long shall be the
vision, concerning the continual sacrifice, and the sin of the
desolation that is made:  and the sanctuary, and the strength be trodden
under foot?

8:14. And he said to him:  Unto evening and morning two thousand three
hundred days:  and the sanctuary shall be cleansed.

Unto evening and morning two thousand three hundred days. . .That is,
six years and almost four months:  which was the whole time from the
beginning of the persecution of Antiochus till his death.

8:15. And it came to pass when I, Daniel, saw the vision, and sought
the meaning, that behold there stood before me as it were the
appearance of a man.

8:16. And I heard the voice of a man between Ulai:  and he called, and
said:  Gabriel, make this man to understand the vision.

8:17. And he came, and stood near where I stood:  and when he was come,
I fell on my face, trembling, and he said to me:  Understand, O son of
man, for in the time of the end the vision shall be fulfilled.

8:18. And when he spoke to me, I fell flat on the ground:  and he
touched me, and set me upright.

8:19. And he said to me:  I will shew thee what things are to come to
pass in the end of the malediction:  for the time hath its end.

8:20. The ram, which thou sawest with horns, is the king of the Medes
and Persians.

8:21. And the he goat, is the king of the Greeks, and the great horn
that was between his eyes, the same is the first king.

8:22. But whereas when that was broken, there arose up four for it,
four kings shall rise up of his nation, but not with his strength.

8:23. And after their reign, when iniquities shall be grown up, there
shall arise a king of a shameless face, and understanding dark
sentences.

8:24. And his power shall be strengthened, but not by his own force:
and he shall lay all things waste, and shall prosper, and do more than
can be believed.  And he shall destroy the mighty, and the people of the
saints,

8:25. According to his will, and craft shall be successful in his hand:
and his heart shall be puffed up, and in the abundance of all things he
shall kill many:  and he shall rise up against the prince of princes,
and shall be broken without hand.

8:26. And the vision of the evening and the morning, which was told, is
true:  thou, therefore, seal up the vision, because it shall come to
pass after many days.

8:27. And I, Daniel, languished, and was sick for some days:  and when I
was risen up, I did the king's business, and I was astonished at the
vision, and there was none that could interpret it.



Daniel Chapter 9


Daniel's confession and prayer:  Gabriel informs him concerning the
seventy weeks to the coming of Christ.

9:1. In the first year of Darius, the son of Assuerus, of the seed of
the Medes, who reigned over the kingdom of the Chaldeans:

9:2. The first year of his reign I, Daniel, understood by books the
number of the years, concerning which the word of the Lord came to
Jeremias, the prophet, that seventy years should be accomplished of the
desolation of Jerusalem.

9:3. And I set my face to the Lord, my God, to pray and make
supplication with fasting, and sackcloth, and ashes.

9:4. And I prayed to the Lord, my God, and I made my confession, and
said:  I beseech thee, O Lord God, great and terrible, who keepest the
covenant, and mercy to them that love thee, and keep thy commandments.

9:5. We have sinned, we have committed iniquity, we have done wickedly,
and have revolted:  and we have gone aside from thy commandments, and
thy judgments.

9:6. We have not hearkened to thy servants, the prophets, that have
spoken in thy name to our kings, to our princes, to our fathers, and to
all the people of the land.

9:7. To thee, O Lord, justice:  but to us confusion of face, as at this
day to the men of Juda, and to the inhabitants of Jerusalem, and to all
Israel, to them that are near, and to them that are far off, in all the
countries whither thou hast driven them, for their iniquities, by which
they have sinned against thee.

9:8. O Lord, to us belongeth confusion of face, to our princes, and to
our fathers, that have sinned.

9:9. But to thee, the Lord our God, mercy and forgiveness, for we have
departed from thee:

9:10. And we have not hearkened to the voice of the Lord, our God, to
walk in his law, which he set before us by his servants, the prophets.

9:11. And all Israel have transgressed thy law, and have turned away
from hearing thy voice, and the malediction, and the curse, which is
written in the book of Moses, the servant of God, is fallen upon us,
because we have sinned against him.

9:12. And he hath confirmed his words which he spoke against us, and
against our princes that judged us, that he would bring in upon us a
great evil, such as never was under all the heaven, according to that
which hath been done in Jerusalem.

9:13. As it is written in the law of Moses, all this evil is come upon
us:  and we entreated not thy face, O Lord our God, that we might turn
from our iniquities, and think on thy truth.

9:14. And the Lord hath watched upon the evil, and hath brought it upon
us:  the Lord, our God, is just in all his works which he hath done:  for
we have not hearkened to his voice.

9:15. And now, O Lord, our God, who hast brought forth thy people out
of the land of Egypt, with a strong hand, and hast made thee a name as
at this day:  we have sinned, we have committed iniquity,

9:16. O Lord, against all thy justice:  let thy wrath and thy
indignation be turned away, I beseech thee, from thy city, Jerusalem,
and from thy holy mountain.  For by reason of our sins, and the
iniquities of our fathers, Jerusalem, and thy people, are a reproach to
all that are round about us.

9:17. Now, therefore, O our God, hear the supplication of thy servant,
and his prayers:  and shew thy face upon thy sanctuary, which is
desolate, for thy own sake.

9:18. Incline, O my God, thy ear, and hear:  open thy eyes, and see our
desolation, and the city upon which thy name is called:  for it is not
for our justifications that we present our prayers before thy face, but
for the multitude of thy tender mercies.

9:19. O Lord, hear:  O Lord, be appeased:  hearken, and do:  delay not,
for thy own sake, O my God:  because thy name is invocated upon thy
city, and upon thy people.

9:20. Now while I was yet speaking, and praying, and confessing my
sins, and the sins of my people of Israel, and presenting my
supplications in the sight of my God, for the holy mountain of my God:

9:21. As I was yet speaking in prayer, behold the man, Gabriel, whom I
had seen in the vision at the beginning, flying swiftly, touched me at
the time of the evening sacrifice.

The man Gabriel. . .The angel Gabriel in the shape of a man.

9:22. And he instructed me, and spoke to me, and said:  O Daniel, I am
now come forth to teach thee, and that thou mightest understand.

9:23. From the beginning of thy prayers the word came forth:  and I am
come to shew it to thee, because thou art a man of desires:  therefore,
do thou mark the word, and understand the vision.

Man of desires. . .that is, ardently praying for the Jews then in
captivity.

9:24. Seventy weeks are shortened upon thy people, and upon thy holy
city, that transgression may be finished, and sin may have an end, and
iniquity may be abolished; and everlasting justice may be brought; and
vision and prophecy may be fulfilled; and the Saint of saints may be
anointed.

Seventy weeks. . .Viz., of years, (or seventy times seven, that is, 490
years,) are shortened; that is, fixed and determined, so that the time
shall be no longer.

9:25. Know thou, therefore, and take notice:  that from the going forth
of the word, to build up Jerusalem again, unto Christ, the prince,
there shall be seven weeks, and sixty-two weeks:  and the street shall
be built again, and the walls, in straitness of times.

From the going forth of the word, etc. . .That is, from the twentieth
year of king Artaxerxes, when by his commandment Nehemias rebuilt the
walls of Jerusalem, 2 Esd. 2.  From which time, according to the best
chronology, there were just sixty-nine weeks of years, that is, 483
years to the baptism of Christ, when he first began to preach and
execute the office of Messias.--Ibid.  In straitness of
times. . .angustia temporum:  which may allude both to the difficulties
and opposition they met with in building:  and to the shortness of the
time in which they finished the wall, viz., fifty-two days.

9:26. And after sixty-two weeks Christ shall be slain:  and the people
that shall deny him shall not be his.  And a people, with their leader,
that shall come, shall destroy the city, and the sanctuary:  and the end
thereof shall be waste, and after the end of the war the appointed
desolation.

A people with their leader. . .The Romans under Titus.

9:27. And he shall confirm the covenant with many, in one week:  and in
the half of the week the victim and the sacrifice shall fail:  and there
shall be in the temple the abomination of desolation:  and the
desolation shall continue even to the consummation, and to the end.

In the half of the week. . .or, in the middle of the week, etc.  Because
Christ preached three years and a half:  and then by his sacrifice upon
the cross abolished all the sacrifices of the law.--Ibid.  The
abomination of desolation. . .Some understand this of the profanation of
the temple by the crimes of the Jews, and by the bloody faction of the
zealots.  Others of the bringing in thither the ensigns and standard of
the pagan Romans.  Others, in fine, distinguish three different times of
desolation:  viz., that under Antiochus; that when the temple was
destroyed by the Romans; and the last near the end of the world under
Antichrist.  To all which, as they suppose, this prophecy may have a
relation.



Daniel Chapter 10


Daniel having humbled himself by fasting and penance seeth a vision,
with which he is much terrified; but he is comforted by an angel.

10:1. In the third year of Cyrus, king of the Persians, a word was
revealed to Daniel, surnamed Baltassar, and a true word, and great
strength:  and he understood the word:  for there is need of
understanding in a vision.

10:2. In those days I, Daniel, mourned the days of three weeks.

10:3. I ate no desirable bread, and neither flesh, nor wine, entered
into my mouth, neither was I anointed with ointment:  till the days of
three weeks were accomplished.

10:4. And in the four and twentieth day of the first month, I was by
the great river, which is the Tigris.

10:5. And I lifted up my eyes, and I saw:  and behold a man clothed in
linen, and his loins were girded with the finest gold:

10:6. And his body was like the chrysolite, and his face as the
appearance of lightning, and his eyes as a burning lamp:  and his arms,
and all downward even to the feet, like in appearance to glittering
brass:  and the voice of his word like the voice of a multitude.

10:7. And I, Daniel alone, saw the vision:  for the men that were with
me saw it not:  but an exceeding great terror fell upon them, and they
fled away, and hid themselves.

10:8. And I, being left alone, saw this great vision:  and there
remained no strength in me, and the appearance of my countenance was
changed in me, and I fainted away, and retained no strength.

10:9. And I heard the voice of his words:  and when I heard I lay in a
consternation upon my face, and my face was close to the ground.

10:10. And behold a hand touched me, and lifted me up upon my knees,
and upon the joints of my hands.

10:11. And he said to me:  Daniel, thou man of desires, understand the
words that I speak to thee, and stand upright:  for I am sent now to
thee.  And when he had said this word to me, I stood trembling.

10:12. And he said to me:  Fear not, Daniel:  for from the first day that
thou didst set thy heart to understand, to afflict thyself in the sight
of thy God, thy words have been heard:  and I am come for thy words.

10:13. But the prince of the kingdom of the Persians resisted me one
and twenty days:  and behold Michael, one of the chief princes, came to
help me, and I remained there by the king of the Persians.

The prince, etc. . .That is, the angel guardian of Persia:  who according
to his office, seeking the spiritual good of the Persians was desirous
that many of the Jews should remain among them.

10:14. But I am come to teach thee what things shall befall thy people
in the latter days, for as yet the vision is for days.

10:15. And when he was speaking such words to me, I cast down my
countenance to the ground, and held my peace.

10:16. And behold as it were the likeness of a son of man touched my
lips:  then I opened my mouth and spoke, and said to him that stood
before me:  O my lord, at the sight of thee my joints are loosed, and no
strength hath remained in me.

10:17. And how can the servant of my lord speak with my lord?  for no
strength remaineth in me; moreover, my breath is stopped.

10:18. Therefore, he that looked like a man, touched me again, and
strengthened me.

10:19. And he said:  Fear not, O man of desires, peace be to thee:  take
courage, and be strong.  And when he spoke to me, I grew strong, and I
said:  Speak, O my lord, for thou hast strengthened me.

10:20. And he said:  Dost thou know wherefore I am come to thee?  And now
I will return, to fight against the prince of the Persians.  When I went
forth, there appeared the prince of the Greeks coming.

10:21. But I will tell thee what is set down in the scripture of truth:
and none is my helper in all these things, but Michael your prince.

Michael your prince. . .The guardian general of the church of God.



Daniel Chapter 11


The angel declares to Daniel many things to come, with regard to the
Persian and Grecian kings:  more especially with regard to Antiochus as
a figure of Antichrist.

11:1. And from the first year of Darius, the Mede, I stood up, that he
might be strengthened, and confirmed.

11:2. And now I will shew thee the truth.  Behold, there shall stand yet
three kings in Persia, and the fourth shall be enriched exceedingly
above them all:  and when he shall be grown mighty by his riches, he
shall stir up all against the kingdom of Greece.

Three kings. . .Viz., Cambyses, Smerdes Magus, and Darius, the son of
Hystaspes.--Ibid.  The fourth. . .Xerxes.

11:3. But there shall rise up a strong king, and shall rule with great
power:  and he shall do what he pleaseth.

A strong king. . .Alexander.

11:4. And when he shall come to his height, his kingdom shall be
broken, and it shall be divided towards the four winds of the heaven:
but not to his posterity, nor according to his power with which he
ruled.  For his kingdom shall be rent in peices, even for strangers,
besides these.

11:5. And the king of the south shall be strengthened, and one of his
princes shall prevail over him, and he shall rule with great power:  for
his dominions shall be great.

The king of the south. . .Ptolemeus the son of Lagus, king of Egypt,
which lies south of Jerusalem.--Ibid.  One of his princes. . .that is,
one of Alexander's princes, shall prevail over him:  that is, shall be
stronger than the king of Egypt.  He speaks of Seleucus Nicator, king of
Asia and Syria, whose successors are here called the kings of the
north, because their dominions lay to the north in respect to
Jerusalem.

11:6. And after the end of years they shall be in league together:  and
the daughter of the king of the south shall come to the king of the
north to make friendship, but she shall not obtain the strength of the
arm, neither shall her seed stand:  and she shall be given up, and her
young men that brought her, and they that strengthened her in these
times.

The daughter of the king of the south. . .Viz., Berenice, daughter of
Ptolemeus Philadelphus, given in marriage to Antiochus Theos, grandson
of Seleucus.

11:7. And a plant of the bud of her roots shall stand up:  and he shall
come with an army, and shall enter into the province of the king of the
north:  and he shall abuse them, and shall prevail.

A plant, etc. . .Ptolemeus Evergetes, the son of Philadelphus.

11:8. And he shall also carry away captive into Egypt their gods, and
their graven things, and their precious vessels of gold and silver:  he
shall prevail against the king of the north.

The king of the north. . .Seleucus Callinicus.

11:9. And the king of the south shall enter into the kingdom, and shall
return to his own land.

11:10. And his sons shall be provoked, and they shall assemble a
multitude of great forces:  and he shall come with haste like a flood:
and he shall return, and be stirred up, and he shall join battle with
his force.

His sons. . .Seleucus Ceraunius, and Antiochus the Great, the sons of
Callinicus.--Ibid.  He shall come. . .Viz., Antiochus the Great.

11:11. And the king of the south being provoked, shall go forth, and
shall fight against the king of the north, and shall prepare an
exceeding great multitude, and a multitude shall be given into his
hands.

The king of the south. . .Ptolemeus Philopator, son of Evergetes.

11:12. And he shall take a multitude, and his heart shall be lifted up,
and he shall cast down many thousands:  but he shall not prevail.

11:13. For the king of the north shall return, and shall prepare a
multitude much greater than before:  and in the end of times, and years,
he shall come in haste with a great army, and much riches.

11:14. And in those times many shall rise up against the king of the
south, and the children of prevaricators of thy people shall lift up
themselves to fulfil the vision, and they shall fall.

11:15. And the king of the north shall come, and shall cast up a mount,
and shall take the best fenced cities:  and the arms of the south shall
not withstand, and his chosen ones shall rise up to resist, and they
shall not have strength.

11:16. And he shall come upon him, and do according to his pleasure,
and there shall be none to stand against his face:  and he shall stand
in the glorious land, and it shall be consumed by his hand.

He shall come upon him. . .Viz., Antiochus shall come upon the king of
the south.--Ibid.  The glorious land. . .Judea.

11:17. And he shall set his face to come to possess all his kingdom,
and he shall make upright conditions with him:  and he shall give him a
daughter of women, to overthrow it:  and she shall not stand, neither
shall she be for him.

All his kingdom. . .Viz., all the kingdom of Ptolemeus Epiphanes, son of
Philopator.--Ibid.  A daughter of women. . .That is, a most beautiful
woman, viz., his daughter Cleopatra.--Ibid.  To overthrow it. . .Viz.,
the kingdom of Epiphanes:  but his policy shall not succeed; for
Cleopatra shall take more to heart the interest of her husband, than that
of her father.

11:18. And he shall turn his face to the islands, and shall take many:
and he shall cause the prince of his reproach to cease, and his
reproach shall be turned upon him.

The prince of his reproach. . .Seipio the Roman general, called the
prince of his reproach, because he overthrew Antiochus, and obliged him
to submit to very dishonourable terms, before he would cease from the
war.

11:19. And he shall turn his face to the empire of his own land, and he
shall stumble, and fall, ans shall not be found.

11:20. And there shall stand up in his place one most vile, and
unworthy of kingly honour:  and in a few days he shall be destroyed, not
in rage nor in battle.

One most vile. . .Seleucus Philopator, who sent Heliodorus to plunder
the temple:  and was shortly after slain by the same Heliodorus.

11:21. And there shall stand up in his place one despised, and the
kingly honour shall not be given him:  and he shall come privately, and
shall obtain the kingdom by fraud.

One despised. . .Viz., Antiochus Epiphanes, who at first was despised
and not received for king.  What is here said of this prince, is
accommodated by St. Jerome and others to Antichrist; of whom this
Antiochus was a figure.

11:22. And the arms of the fighter shall be overcome before his face,
and shall be broken:  yea, also the prince of the covenant.

Of the fighter. . .That is, of them that shall oppose him, and shall
fight against him.--Ibid.  The prince of the covenant. . .or, of the
league.  The chief of them that conspired against him:  or the king of
Egypt his most powerful adversary.

11:23. And after friendships, he will deal deceitfully with him:  and he
shall go up, and shall overcome with a small people.

11:24. And he shall enter into rich and plentiful cities:  and he shall
do that which his fathers never did, nor his fathers' fathers:  he shall
scatter their spoils, and their prey, and their riches, and shall
forecast devices against the best fenced places:  and this until a time.

11:25. And his strength, and his heart, shall be stirred up against the
king of the south, with a great army:  and the king of the south shall
be stirred up to battle with many and very strong succours:  and they
shall not stand, for they shall form designs against him.

The king. . .Ptolemeus Philometor.

11:26. And they that eat bread with him, shall destroy him, and his
army shall be overthrown:  and many shall fall down slain.

11:27. And the heart of the two kings shall be to do evil, and they
shall speak lies at one table, and they shall not prosper:  because as
yet the end is unto another time.

11:28. And he shall return into his land with much riches:  and his
heart shall be against the holy covenant, and he shall succeed, and
shall return into his own land.

11:29. At the time appointed he shall return, and he shall come to the
south, but the latter time shall not be like the former.

11:30. And the galleys and the Romans shall come upon him, and he shall
be struck, and shall return, and shall have indignation against the
covenant of the sanctuary, and he shall succeed:  and he shall return,
and shall devise against them that have forsaken the covenant of the
sanctuary.

The galleys and the Romans. . .Popilius, and the other Roman
ambassadors, who came in galleys, and obliged him to depart from Egypt.

11:31. And arms shall stand on his part, and they shall defile the
sanctuary of strength, and shall take away the continual sacrifice:  and
they shall place there the abomination unto desolation.

They shall place there the abomination, etc. . .The idol of Jupiter
Olympius, which Antiochus ordered to be set up in the sanctuary of the
temple:  which is here called the sanctuary of strength, from the
Almighty that was worshipped there.

11:32. And such as deal wickedly against the covenant shall deceitfully
dissemble:  but the people that know their God shall prevail and
succeed.

11:33. And they that are learned among the people shall teach many:  and
they shall fall by the sword, and by fire, and by captivity, and by
spoil for many days.

11:34. And when they shall have fallen, they shall be relieved with a
small help:  and many shall be joined to them deceitfully.

11:35. And some of the learned shall fall, that they may be tried, and
may be chosen, and made white, even to the appointed time:  because yet
there shall be another time.

11:36. And the king shall do according to his will, and he shall be
lifted up, and shall magnify himself against every god:  and he shall
speak great things against the God of gods, and shall prosper, till the
wrath be accomplished.  For the determination is made.

11:37. And he shall make no account of the God of his fathers:  and he
shall follow the lust of women, and he shall not regard any gods:  for
he shall rise up against all things.

11:38. But he shall worship the god Maozim, in his place:  and a god
whom his fathers knew not, he shall worship with gold, and silver, and
precious stones, and things of great price.

The god Maozim. . .That is, the god of forces or strong holds.

11:39. And he shall do this to fortify Maozim with a strange god, whom
he hath acknowledged, and he shall increase glory, and shall give them
power over many, and shall divide the land gratis.

And he shall increase glory, etc. . .He shall bestow honours, riches and
lands, upon them that shall worship his god.

11:40. And at the time prefixed the king of the south shall fight
against him, and the king of the north shall come against him like a
tempest, with chariots, and with horsemen, and with a great navy, and
he shall enter into the countries, and shall destroy, and pass through.

11:41. And he shall enter into the glorious land, and many shall fall:
and these only shall be saved out of his hand, Edom, and Moab, and the
principality of the children of Ammon.

11:42. And he shall lay his hand upon the lands:  and the land of Egypt
shall not escape.

11:43. And he shall have power over the treasures of gold, and of
silver, and all the precious things of Egypt:  and he shall pass through
Lybia, and Ethiopia.

11:44. And tidings out of the east, and out of the north, shall trouble
him:  and he shall come with a great multitude to destroy and slay many.

11:45. And he shall fix his tabernacle, Apadno, between the seas, upon
a glorious and holy mountain:  and he shall come even to the top
thereof, and none shall help him.

Apadno. . .Some take it for the proper name of a place:  others, from the
Hebrew, translate it his palace.



Daniel Chapter 12


Michael shall stand up for the people of God:  with other things
relating to Antichrist, and the end of the world.

12:1. But at that time shall Michael rise up, the great prince, who
standeth for the children of thy people:  and a time shall come, such as
never was from the time that nations began, even until that time.  And
at that time shall thy people be saved, every one that shall be found
written in the book.

12:2. And many of those that sleep in the dust of the earth, shall
awake:  some unto life everlasting, and others unto reproach, to see it
always.

12:3. But they that are learned, shall shine as the brightness of the
firmament:  and they that instruct many to justice, as stars for all
eternity.

Learned. . .Viz., in the law of God and true wisdom, which consists in
knowing and loving God.

12:4. But thou, O Daniel, shut up the words, and seal the book, even to
the time appointed:  many shall pass over, and knowledge shall be
manifold.

12:5. And I, Daniel, looked, and behold as it were two others stood:
one on this side upon the bank of the river, and another on that side,
on the other bank of the river.

12:6. And I said to the man that was clothed in linen, that stood upon
the waters of the river:  How long shall it be to the end of these
wonders?

12:7. And I heard the man that was clothed in linen, that stood upon
the waters of the river, when he had lifted up his right hand, and his
left hand to heaven, and had sworn by him that liveth for ever, that it
should be unto a time, and times, and half a time.  And when the
scattering of the band of the holy people shall be accomplished, all
these things shall be finished.

12:8. And I heard, and understood not.  And I said:  O my lord, what
shall be after these things?

12:9. And he said:  Go, Daniel, because the words are shut up, and
sealed until the appointed time.

12:10. Many shall be chosen, and made white, and shall be tried as
fire:  and the wicked shall deal wickedly, and none of the wicked shall
understand, but the learned shall understand.

12:11. And from the time when the continual sacrifice shall be taken
away, and the abomination unto desolation shall be set up, there shall
be a thousand two hundred ninety days.

12:12. Blessed is he that waiteth, and cometh unto a thousand three
hundred thirty-five days.

12:13. But go thou thy ways until the time appointed:  and thou shalt
rest, and stand in thy lot unto the end of the days.



Daniel Chapter 13


The history of Susanna and the two elders.

This history of Susanna, in all the ancient Greek and Latin Bibles, was
placed in the beginning of the book of Daniel:  till St. Jerome, in his
translation, detached it from thence; because he did not find it in the
Hebrew:  which is also the case of the history of Bel and the Dragon.
But both the one and the other are received by the Catholic Church:  and
were from the very beginning a part of the Christian Bible.

13:1. Now there was a man that dwelt in Babylon, and his name was
Joakim:

13:2. And he took a wife, whose name was Susanna, the daughter of
Helcias, a very beautiful woman, and one that feared God.

13:3. For her parents being just, had instructed their daughter
according to the law of Moses.

13:4. Now Joakim was very rich, and had an orchard near his house:  and
the Jews resorted to him, because he was the most honourable of them
all.

13:5. And there were two of the ancients of the people appointed judges
that year, of whom the Lord said:  That iniquity came out from Babylon,
from the ancient judges, that seemed to govern the people.

13:6. These men frequented the house of Joakim, and all that hand any
matters of judgment came to them.

13:7. And when the people departed away at noon, Susanna went in, and
walked in her husband's orchard.

13:8. And the old men saw her going in every day, and walking:  and they
were inflamed with lust towards her:

13:9. And they perverted their own mind, and turned away their eyes,
that they might not look unto heaven, nor remember just judgments.

13:10. So they were both wounded with the love of her, yet they did not
make known their grief one to the other.

13:11. For they were ashamed to declare to one another their lust,
being desirous to have to do with her:

13:12. And they watched carefully every day to see her.  And one said to
the other:

13:13. Let us now go home, for it is dinner time.  So going out, they
departed one from another.

13:14. And turning back again, they came both to the same place:  and
asking one another the cause, they acknowledged their lust:  and then
they agreed together upon a time, when they might find her alone.

13:15. And it fell out, as they watched a fit day, she went in on a
time, as yesterday and the day before, with two maids only, and was
desirous to wash herself in the orchard:  for it was hot weather.

13:16. And there was nobody there, but the two old men that had hid
themselves, and were beholding her.

13:17. So she said to the maids:  Bring me oil, and washing balls, and
shut the doors of the orchard, that I may wash me.

13:18. And they did as she bade them:  and they shut the doors of the
orchard, and went out by a back door to fetch what she had commanded
them, and they knew not that the elders were hid within.

13:19. Now when the maids were gone forth, the two elders arose, and
ran to her, and said:

13:20. Behold the doors of the orchard are shut, and nobody seeth us,
and we are in love with thee:  wherefore consent to us, and lie with us.

13:21. But if thou wilt not, we will bear witness against thee, that a
young man was with thee, and therefore thou didst send away thy maids
form thee.

13:22. Susanna sighed, and said:  I am straitened on every side:  for if
I do this thing, it is death to me:  and if I do it not, I shall not
escape your hands.

13:23. But it is better for me to fall into your hands without doing
it, than to sin in the sight of the Lord.

13:24. With that Susanna cried out with a loud voice:  and the elders
also cried out against her.

13:25. And one of them ran to the door of the orchard, and opened it.

13:26. So when the servants of the house heard the cry in the orchard,
they rushed in by the back door, to see what was the matter.

13:27. But after the old men had spoken, the servants were greatly
ashamed:  for never had there been any such word said of Susanna.  And on
the next day,

13:28. When the people were come to Joakim, her husband, the two elders
also came full of wicked device against Susanna, to put her to death.

13:29. And they said before the people:  Send to Susanna, daughter of
Helcias, the wife of Joakim.  And presently they sent.

13:30. And she came with her parents, and children and all her kindred.

13:31. Now Susanna was exceeding delicate, and beautiful to behold.

13:32. But those wicked men commanded that her face should be
uncovered, (for she was covered) that so at least they might be
satisfied with her beauty.

13:33. Therefore her friends, and all her acquaintance wept.

13:34. But the two elders rising up in the midst of the people, laid
their hands upon her head.

13:35. And she weeping, looked up to heaven, for her heart had
confidence in the Lord.

13:36. And the elders said:  As we walked in the orchard alone, this
woman came in with two maids, and shut the doors of the orchard, ans
sent away the maids from her.

13:37. Then a young man that was there hid came to her, and lay with
her.

13:38. But we that were in a corner of the orchard, seeing this
wickedness, ran up to them, and we saw them lie together.

13:39. And him indeed we could not take, because he was stronger than
us, and opening the doors, he leaped out:

13:40. But having taken this woman, we asked who the young man was, but
she would not tell us:  of this thing we are witnesses.

13:41. The multitude believed them, as being the elders, and the judges
of the people, and they condemned her to death.

13:42. Then Susanna cried out with a loud voice, and said:  O eternal
God, who knowest hidden things, who knowest all things before they come
to pass,

13:43. Thou knowest that they have borne false witness against me:  and
behold I must die, whereas I have done none of these things, which
these men have maliciously forged against me.

13:44. And the Lord heard her voice.

13:45. And when she was led to be put to death, the Lord raised up the
holy spirit of a young boy, whose name was Daniel:

13:46. And he cried out with a loud voice:  I am clear from the blood of
this woman.

13:47. Then all the people turning themselves towards him, said:  What
meaneth this word that thou hast spoken?

13:48. But he standing in the midst of them, said:  Are ye so foolish,
ye children of Israel, that without examination or knowledge of the
truth, you have condemned a daughter of Israel?

13:49. Return to judgment, for they have borne false witness against
her.

13:50. So all the people turned again in haste, and the old men said to
him:  Come, and sit thou down among us, and shew it us:  seeing God hath
given thee the honour of old age.

13:51. And Daniel said to the people:  Separate these two far from one
another, and I will examine them.

13:52. So when they were put asunder one from the other, he called one
of them, and said to him:  O thou that art grown old in evil days, now
are thy sins come out, which thou hast committed before:

13:53. In judging unjust judgments, oppressing the innocent, and
letting the guilty to go free, whereas the Lord saith:  The innocent and
the just thou shalt not kill.

13:54. Now then if thou sawest her, tell me under what tree thou sawest
them conversing together:  He said:  Under a mastic tree.

13:55. And Daniel said:  Well hast thou lied against thy own head:  for
behold the angel of God having received the sentence of him, shall cut
thee in two.

13:56. And having put him aside, he commanded that the other should
come, and he said to him:  O thou seed of Chanaan, and not of Juda,
beauty hath deceived tee, and lust hath perverted thy heart:

13:57. Thus did you do to the daughters of Israel, and they for fear
conversed with you:  but a daughter of Juda would not abide your
wickedness.

13:58. Now, therefore, tell me, under what tree didst thou take them
conversing together.  And he answered:  Under a holm tree.

13:59. And Daniel said to him:  Well hast thou also lied against thy own
head:  for the angel of the Lord waiteth with a sword to cut thee in
two, and to destroy you.

13:60. With that all the assembly cried out with a loud voice, and they
blessed God, who saveth them that trust in him.

13:61. And they rose up against the two elders, (for Daniel had
convicted them of false witness by their own mouth) and they did to
them as they had maliciously dealt against their neighbour,

13:62. To fulfil the law of Moses:  and they put them to death, and
innocent blood was saved in that day.

13:63. But Helcias, and his wife, praised God, for their daughter,
Susanna, with Joakim, her husband, and all her kindred, because there
was no dishonesty found in her.

13:64. And Daniel became great in the sight of the people from that
day, and thence forward.

13:65. And king Astyages was gathered to his fathers; and Cyrus, the
Persian, received his kingdom.



Daniel Chapter 14


The history of Bel, and of the great serpent worshipped by the
Babylonians.

14:1. And Daniel was the king's guest, and was honoured above all his
friends.

The king's guest. . .It seems most probable, that the king here spoken
of was Evilmerodach, the son and successor of Nabuchodonosor, and a
great favourer of the Jews.

14:2. Now the Babylonians had an idol called Bel:  and there was spent
upon him every day twelve great measures of fine flour, and forty
sheep, and six vessels of wine.

14:3. The king also worshipped him, and went every day to adore him:
but Daniel adored his God.  And the king said to him:  Why dost thou not
adore Bel?

14:4. And he answered, and said to him:  Because I do not worship idols
made with hands, but the living God, that created heaven and earth, and
hath power over all flesh.

14:5. And the king said to him:  Doth not Bel seem to thee to be a
living god?  Seest thou not how much he eateth and drinketh every day?

14:6. Then Daniel smiled, and said:  O king, be not deceived:  for this
is but clay within, and brass without, neither hath he eaten at any
time.

14:7. And the king being angry, called for his priests, and said to
them:  If you tell me not who it is that eateth up these expenses, you
shall die.

14:8. But if you can shew that Bel eateth these things, Daniel shall
die, because he hath blasphemed against Bel.  And Daniel said to the
king:  Be it done according to thy word.

14:9. Now the priests of Bel were seventy, beside their wives, and
little ones, and children.  And the king went with Daniel into the
temple of Bel.

14:10. And the priests of Bel said:  Behold, we go out:  and do thou, O
king, set on the meats, and make ready the wine, and shut the door
fast, and seal it with thy own ring:

14:11. And when thou comest in the morning, if thou findest not that
Bel hath eaten up all, we will suffer death, or else Daniel, that hath
lied against us.

14:12. And they little regarded it, because they had made under the
table a secret entrance, and they always came in by it, and consumed
those things.

14:13. So it came to pass after they were gone out, the king set the
meats before Bel:  and Daniel commanded his servants, and they brought
ashes, and he sifted them all over the temple before the king:  and
going forth, they shut the door, and having sealed it with the king's
ring, they departed.

14:14. But the priests went in by night, according to their custom,
with their wives, and their children:  and they eat and drank up all.

14:15. And the king arose early in the morning, and Daniel with him.

14:16. And the king said:  Are the seals whole, Daniel?  And he answered:
They are whole, O king.

14:17. And as soon as he had opened the door, the king looked upon the
table, and cried out with a loud voice:  Great art thou, O Bel, and
there is not any deceit with thee.

14:18. And Daniel laughed:  and he held the king, that he should not go
in:  and he said:  Behold the pavement, mark whose footsteps these are.

14:19. And the king said:  I see the footsteps of men, and women, and
children.  And the king was angry.

14:20. Then he took the priests, and their wives, and their children:
and they shewed him the private doors by which they came in, and
consumed the things that were on the table.

14:21. The king, therefore, put them to death, and delivered Bel into
the power of Daniel:  who destroyed him and his temple.

14:22. And there was a great dragon in that place, and the Babylonians
worshipped him.

14:23. And the king said to Daniel:  Behold, thou canst not say now,
that this is not a living god:  adore him, therefore.

14:24. And Daniel said:  I adore the Lord, my God:  for he is the living
God:  but that is no living god.

14:25. But give me leave, O king, and I will kill this dragon without
sword or club.  And the king said, I give thee leave.

14:26. Then Daniel took pitch, and fat, and hair, and boiled them
together:  and he made lumps, and put them into the dragon's mouth, and
the dragon burst asunder.  And he said:  Behold him whom you worship.

14:27. And when the Babylonians had heard this, they took great
indignation:  and being gathered together against the king, they said:
The king is become a Jew.  He hath destroyed Bel, he hath killed the
dragon, and he hath put the priests to death.

14:28. And they came to the king, and said:  Deliver us Daniel, or else
we will destroy thee and thy house.

14:29. And the king saw that they pressed upon him violently:  and being
constrained by necessity:  he delivered Daniel to them.

14:30. And they cast him into the den of lions, and he was there six
days.

The den of lions. . .Daniel was twice cast into the den of lions; one
under Darius the Mede, because he had transgressed the king's edict, by
praying three times a day:  and another time under Evilmerodach by a
sedition of the people.  This time he remained six days in the lions'
den; the other time only one night.

14:31. And in the den there were seven lions, and they had given to
them two carcasses every day, and two sheep:  but then they were not
given unto them, that they might devour Daniel.

14:32. Now there was in Judea a prophet called Habacuc, and he had
boiled pottage, and had broken bread in a bowl:  and was going into the
field, to carry it to the reapers.

Habacuc. . .The same, as some think whose prophecy is found among the
lesser prophets but others believe him to be different.

14:33. And the angel of the Lord said to Habacuc:  Carry the dinner
which thou hast into Babylon, to Daniel, who is in the lions' den.

14:34. And Habacuc said:  Lord, I never saw Babylon, nor do I know the
den.

14:35. And the angel of the Lord took him by the top of his head, and
carried him by the hair of his head, and set him in Babylon, over the
den, in the force of his spirit.

14:36. And Habacuc cried, saying:  O Daniel, thou servant of God, take
the dinner that God hath sent thee.

14:37. And Daniel said, Thou hast remembered me, O God, and thou hast
not forsaken them that love thee.

14:38. And Daniel arose, and eat.  And the angel of the Lord presently
set Habacuc again in his own place.

14:39. And upon the seventh day the king came to bewail Daniel:  and he
came to the den, and looked in, and behold Daniel was sitting in the
midst of the lions.

14:40. And the king cried out with a loud voice, saying:  Great art
thou, O Lord, the God of Daniel.  And he drew him out of the lions' den.

14:41. But those that had been the cause of his destruction, he cast
into the den, and they were devoured in a moment before him.

14:42. Then the king said:  Let all the inhabitants of the whole earth
fear the God of Daniel:  for he is the Saviour, working signs, and
wonders in the earth:  who hath delivered Daniel out of the lions' den.




THE PROPHECY OF OSEE



OSEE, or Hosea, whose name signifies A saviour, was the first in the
order of time among those who are commonly called lesser prophets,
because their prophecies are short.  He prophesied in the kingdom of
Israel, that is, of the ten tribes, about the same time that Isaias
prophesied in the kingdom of Juda.



Osee Chapter 1


By marrying a harlot, and by the names of his children, the prophet
sets forth the crimes of Israel and their punishment.  He foretells
their redemption by Christ.

1:1. The word of the Lord, that came to Osee, the son of Beeri, in the
days of Ozias, Joathan, Achaz, and Ezechias, kings of Juda, and in the
days of Jeroboam, the son of Joas, king of Israel.

1:2. The beginning of the Lord's speaking by Osee:  and the Lord said to
Osee:  Go, take thee a wife of fornications, and have of her children of
fornications:  for the land by fornication shall depart from the Lord.

A wife of fornications. . .That is, a wife that has been given to
fornication.  This was to represent the Lord's proceedings with his
people Israel, who, by spiritual fornication, were continually
offending him.--Ibid.  Children of fornications. . .So called from the
character of their mother, if not also from their own wicked
dispositions.

1:3. So he went and took Gomer, the daughter of Debelaim:  and she
conceived, and bore him a son.

1:4. And the Lord said to him:  Call his name Jezrahel:  for yet a little
while, and I will visit the blood of Jezrahel upon the house of Jehu,
and I will cause to cease the kingdom of the house of Israel.

1:5. And in that day I will break in pieces the bow of Israel in the
valley of Jezrahel.

1:6. And she conceived again, and bore a daughter, and he said to him:
Call her name, Without mercy:  for I will not add any more to have mercy
on the house of Israel, but I will utterly forget them.

Without mercy. . .Lo-Ruhamah.

1:7. And I will have mercy on the house of Juda, and I will save them
by the Lord, their God:  and I will not save them by bow, nor by sword,
nor by battle, nor by horses, nor by horsemen.

1:8. And she weaned her that was called Without mercy.  And she
conceived, and bore a son.

1:9. And he said:  Call his name, Not my people:  for you are not my
people, and I will not be yours.

Not my people. . .Lo-ammi.

1:10. And the number of the children of Israel shall be as the sand of
the sea, that is without measure, and shall not be numbered.  And it
shall be in the place where it shall be said to them:  You are not my
people:  it shall be said to them:  Ye are the sons of the living God.

The number, etc. . .Viz., of the true Israelites, the children of the
church of Christ.

1:11. And the children of Juda, and the children of Israel, shall be
gathered together:  and they shall appoint themselves one head, and
shall come up out of the land:  for great is the day of Jezrahel.

One head. . .viz., Christ.--Ibid.  Great is the day of Jezrahel. . .That
is, of the seed of God; for Jezrahel signifies the seed of God.



Osee Chapter 2


Israel is justly punished for leaving God.  The abundance of grace in
the church of Christ.

2:1. Say ye to your brethren:  You are my people:  and to your sister:
Thou hast obtained mercy.

Say to your brethren, etc. . .or, Call your brethren, My people:  and
your sister, Her that hath obtained mercy.  This is connected with the
latter end of the foregoing chapter, and relates to the converts of
Israel.

2:2. Judge your mother, judge her:  because she is not my wife, and I am
not her husband.  Let her put away her fornications from her face, and
her adulteries from between her breasts.

Your mother. . .The synagogue.

2:3. Lest I strip her naked, and set her as in the day that she was
born:  and I will make her as a wilderness, and will set her as a land
that none can pass through and will kill her with drought.

2:4. And I will not have mercy on her children.  for they are the
children of fornications.

2:5. For their mother hath committed fornication, she that conceived
them is covered with shame:  for she said:  I will go after my lovers,
that give me my bread, and my water, my wool, and my flax, my oil, and
my drink.

2:6. Wherefore, behold, I will hedge up thy way with thorns, and I will
stop it up with a wall, and she shall not find her paths.

2:7. And she shall follow after her lovers, and shall not overtake
them:  and she shall seek them, and shall not find, and she shall say:  I
will go, and return to my first husband:  because it was better with me
then than now.

2:8. And she did not know that I gave her corn, and wine, and oil, and
multiplied her silver, and gold, which they have used in the service of
Baal.

2:9. Therefore will I return, and take away my corn in its season, and
my wine in its season, and I will set at liberty my wool, and my flax,
which covered her disgrace.

2:10. And now I will lay open her folly in the eyes of her lovers:  and
no man shall deliver her out of my hand:

2:11. And I will cause all her mirth to cease, her solemnities, her new
moons, her sabbaths, and all her festival times.

2:12. And I will destroy her vines, and her fig trees, of which she
said:  These are my rewards, which my lovers have given me:  and I will
make her as a forest and the beasts of the field shall devour her.

2:13. And I will visit upon her the days of Baalim, to whom she burnt
incense, and decked herself out with her earrings, and with her jewels,
and went after her lovers, and forgot me, saith the Lord.

2:14. Therefore, behold I will allure her, and will lead her into the
wilderness:  and I will speak to her heart.

I will allure her, etc. . .After all her disloyalties, I will still
allure her by my grace etc., and send her vinedressers, viz., the
apostles:  originally her own children, who shall open to her the gates
of hope; as heretofore at her coming into the land of promise, she had
all good success after she had satisfied the divine justice by the
execution of Achan in the valley of Achor.  Jos. 7.

2:15. And I will give her vinedressers out of the same place, and the
valley of Achor for an opening of hope:  and she shall sing there
according to the days of her youth, and according to the days of her
coming up out of the land of Egypt.

2:16. And it shall be in that day, saith the Lord:  That she shall call
me:  My husband, and she shall call me no more Banli.

My husband. . .In Hebrew, Ishi.  Baali, my lord.  The meaning of this
verse is:  that whereas Ishi and Baali were used indifferently in those
days by wives speaking to their husbands; the synagogue, whom God was
pleased to consider as his spouse, should call him only Ishi, and
abstain from the name of Baali, because of its affinity with the idol
Baal.

2:17. And I will take away the names of Baalim out of her mouth, and
she shall no more remember their name.

Baalim. . .It is the plural number of Baal:  for there were divers idols
of Baal.

2:18. And in that day I will make a covenant with them, with the beasts
of the field, and with the fowls of the air, and with the creeping
things of the earth:  and I will destroy the bow, and the sword, and war
out of the land:  and I will make them sleep secure.

2:19. And I will espouse thee to me for ever:  and I will espouse thee
to me in justice, and judgment, and in mercy, and in commiserations.

I will espouse thee, etc. . .This relates to the happy espousals of
Christ with his church:  which shall never be dissolved.

2:20. And I will espouse thee to me in faith:  and thou shalt know that
I am the Lord.

2:21. And it shall come to pass in that day:  I will hear, saith the
Lord, I will hear the heavens, and they shall hear the earth.

Hear the heavens, etc. . .All shall conspire in favour of the church,
which in the following verse is called Jezrahel, that is, the seed of
God.

2:22. And the earth shall hear the corn, and the wine, and the oil, and
these shall hear Jezrahel.

2:23. And I will sow her unto me in the earth, and I will have mercy on
her that was without mercy.

2:24. And I will say to that which is not my people:  Thou art my
people:  and they shall say:  Thou art my God.

That which was not my people, etc. . .This relates to the conversion of
the Gentiles.



Osee Chapter 3


The prophet is commanded again to love an adulteress; to signify God's
love to the synagogue.  The wretched state of the Jews for a long time,
till at last they shall be converted.

3:1. And the Lord said to me:  Go yet again, and love a woman beloved of
her friend, and an adulteress:  as the Lord loveth the children of
Israel, and they look to strange gods, and love the husks of the
grapes.

3:2. And I bought her to me for fifteen pieces of silver, and for a
core of barley, and for half a core of barley.

3:3. And I said to her:  Thou shalt wait for me many days:  thou shalt
not play the harlot, and thou shalt be no man's, and I also will wait
for thee.

3:4. For the children of Israel shall sit many days without king, and
without prince, and without sacrifice, and without altar, and without
ephod, and without theraphim.

Theraphim. . .Images or representations.

3:5. And after this the children of Israel shall return and shall seek
the Lord, their God, and David, their king:  and they shall fear the
Lord, and his goodness, in the last days.

David their king. . .That is, Christ, who is of the house of David.



Osee Chapter 4


God's judgment against the sins of Israel:  Juda is warned not to follow
their example.

4:1. Hear the word of the Lord, ye children of Israel, for the Lord
shall enter into judgment with the inhabitants of the land:  for there
is no truth, and there is no mercy, and there is no knowledge of God in
the land.

4:2. Cursing, and lying, and killing, and theft, and adultery, have
overflowed, and blood hath touched blood.

4:3. Therefore shall the land mourn, and every one that dwelleth in it
shall languish with the heat of the field, and with the fowls of the
air:  yea, the fishes of the sea also shall be gathered together.

4:4. But yet let not any man judge:  and let not a man be rebuked:  for
thy people are as they that contradict the priest.

Let not any man judge, etc. . .As if he would say:  It is in vain to
strive with them, or reprove them, they are so obstinate in evil.

4:5. And thou shalt fall today, and the prophet also shall fall with
thee:  in the night I have made thy mother to be silent.

4:6. My people have been silent, because they had no knowledge:  because
thou hast rejected knowledge, I will reject thee, that thou shalt not
do the office of priesthood to me:  and thou hast forgotten the law of
thy God, I also will forget thy children.

4:7. According to the multitude of them, so have they sinned against
me:  I will change their glory into shame.

4:8. They shall eat the sins of my people, and shall lift up their
souls to their iniquity.

4:9. And there shall be like people like priest:  and I will visit their
ways upon them, and I will repay them their devices.

4:10. And they shall eat and shall not be filled:  they have committed
fornication, and have not ceased:  because they have forsaken the Lord
in not observing the law.

4:11. Fornication, and wine, and drunkenness, take away the
understanding.

4:12. My people have consulted their stocks, and their staff hath
declared unto them:  for the spirit of fornication hath deceived them,
and they have committed fornication against their God.

4:13. They offered sacrifice upon the tops of the mountains, and burnt
incense upon the hills:  under the oak, and the poplar, and the
turpentine tree, because the shadow thereof was good:  therefore shall
your daughters commit fornication, aud your spouses shall be
adulteresses.

4:14. I will not visit upon your daughters, when they shall commit
fornication, and upon your spouses when they shall commit adultery:
because themselves conversed with harlots, and offered sacrifice with
the effeminate, and the people that doth not understand shall be
beaten.

4:15. If thou play the harlot, O Israel, at least let not Juda offend:
and go ye not into Galgal, and come not up into Bethaven, and do not
swear:  The Lord liveth.

Galgal and Bethaven. . .Places where idols were worshipped.  Bethel,
which signifies the house of God, is called by the prophet, Bethaven,
that is, the house of vanity, from Jeroboam's golden calf that was
worshipped there.

4:16. For Israel hath gone astray like a wanton heifer now will the
Lord feed them, as a lamb in a spacious place.

4:17. Ephraim is a partaker with idols, let him alone.

4:18. Their banquet is separated, they have gone astray by fornication:
they that should have protected them have loved to bring shame upon
them.

4:19. The wind hath bound them up in its wings, and they shall be
confounded because of their sacrifices.



Osee Chapter 5


God's threats against the priests, the people, and princes of Israel,
for their idolatry.

5:1. Hear ye this, O priests, and hearken, O ye house of Israel, and
give ear, O house of the king:  for there is a judgment against you,
because you have been a snare to them whom you should have watched over
and a net spread upon Thabor.

O priests. . .What is said of priests in this prophecy is chiefly
understood of the priests of the kingdom of Israel; who were not true
priests of the race of Aaron; but served the calves at Bethel and Dan.

5:2. And you have turned aside victims into the depth and I am the
teacher of them all.

5:3. I know Ephraim, and Israel is not hid from me for now Ephraim hath
committed fornication, Israel is defiled.

5:4. They will not set their thoughts to return to their God:  for the
spirit of fornication is in the midst of them, and they have not known
the Lord.

5:5. And the pride of Israel shall answer in his face:  and Israel, and
Ephraim shall fall in their iniquity, Juda also shall fall with them.

5:6. With their flocks and with their herds, they shall go to seek the
Lord, and shall not find him:  he is withdrawn from them.

5:7. They have transgressed against the Lord:  for they have begotten
children that are strangers:  now shall a month devour them with their
portions.

Children that are strangers. . .That is, aliens from God:  and therefore
they are threatened with speedy destruction.

5:8. Blow ye the cornet in Gabaa, the trumpet in Rama:  howl ye in
Bethaven, behind thy back, O Benjamin.

5:9. Ephraim shall be in desolation in the day of rebuke:  among the
tribes of Israel I have shewn that which shall surely be.

5:10. The princes of Juda are become as they that take up the bound:  I
will pour out my wrath upon them like water.

As they that take up the bound. . .That is, they that remove the
boundary, encroaching on the property of their neighbors:  figuratively:
going beyond the boundary of the laws of God.

5:11. Ephraim is under oppression, and broken in judgment:  because he
began to go after filthiness.

5:12. And I will be like a moth to Ephraim:  and like rottenness to the
house of Juda.

5:13. And Ephraim saw his sickness, and Juda his band:  and Ephraim went
to the Assyrian, and sent to the avenging king:  and he shall not be
able to heal you, neither shall he be able to take off the band from
you.

5:14. For I will be like a lioness to Ephraim, and like a lion's whelp
to the house of Juda:  I, I will catch, and go:  I will take away, and
there is none that can rescue.

5:15. I will go and return to my place:  until you are consumed, and
seek my face.



Osee Chapter 6


Affliction shall be a means to bring many to Christ, a complaint of the
untowardness of the Jews.  God loves mercy more than sacrifice.

6:1. In their affliction they will rise early to me:  Come, and let us
return to the Lord.

6:2. For he hath taken us, and he will heal us:  he will strike, and he
will cure us.

6:3. He will revive us after two days:  on the third day he will raise
us up, and we shall live in his sight.  We shall know, and we shall
follow on, that we may know the Lord.  His going forth is prepared as
the morning light, and he will come to us as the early and the latter
rain to the earth.

6:4. What shall I do to thee, O Ephraim?  what shall I do to thee, O
Juda?  your mercy is as a morning cloud, and as the dew that goeth away
in the morning.

6:5. For this reason have I hewed them by the prophets, I have slain
them by the words of my mouth:  and thy judgments shall go forth as the
light.

6:6. For I desired mercy, and not sacrifice:  and the knowledge of God
more than holocausts.

6:7. But they, like Adam, have transgressed the covenant, there have
they dealt treacherously against me.

6:8. Galaad is a city of workers of idols, supplanted with blood.

Supplanted with blood. . .that is, undermined and brought to ruin, for
shedding of blood:  and, as it is signified in the following verse, for
conspiring with the priests (of Bethel) like robbers, to murder in the
way such as passed out of Sichem to go towards the temple of Jerusalem.
Or else . . .upplanted with blood. . .signifies flowing in such manner
with blood, as to suffer none to walk there without imbruing the soles
of their feet in blood.

6:9. And like the jaws of highway robbers, they conspire with the
priests who murder in the way those that pass out of Sichem:  for they
have wrought wickedness.

6:10. I have seen a horrible thing in the house of Israel:  the
fornications of Ephraim there:  Israel is defiled.

6:11. And thou also, O Juda, set thee a harvest, when I shall bring
back the captivity of my people.



Osee Chapter 7


The manifold sins of Israel, and of their kings, hinder the Lord from
healing them.

7:1. When I would have healed Israel, the iniquity of Ephraim was
discovered, and the wickedness of Samaria, for they have committed
falsehood, and the thief is come in to steal, the robber is without.

7:2. And lest they may say in their hearts, that I remember all their
wickedness:  their own devices now have beset them about, they have been
done before my face.

7:3. They have made the king glad with their wickedness:  and the
princes with their lies.

Made the king glad, etc. . .To please Jeroboam, and their other kings
they have given themselves up to the wicked worship of idols, which are
mere falsehood and lies.

7:4. They are all adulterers, like an oven heated by the baker:  the
city rested a little from the mingling of the leaven, till the whole
was leavened.

7:5. The day of our king, the princes began to be mad with wine:  he
stretched out his hand with scorners.

7:6. Because they have applied their heart like an oven, when he laid
snares for them:  he slept all the night baking them, in the morning he
himself was heated as a flaming fire.

7:7. They were all heated like an oven, and have devoured their judges:
all their kings have fallen:  there is none amongst them that calleth
unto me.

7:8. Ephraim himself is mixed among the nations:  Ephraim is become as
bread baked under the ashes, that is not turned.

7:9. Strangers have devoured his strength, and he knew it not:  yea,
grey hairs also are spread about upon him, and he is ignorant of it.

7:10. And the pride of Israel shall be humbled before his face:  and
they have not returned to the Lord their God, nor have they sought him
in all these.

7:11. And Ephraim is become as a dove that is decoyed, not having a
heart:  they called upon Egypt, they went to the Assyrians.

7:12. And when they shall go, I will spread my net upon them:  I will
bring them down as the fowl of the air, I will strike them as their
congregation hath heard.

7:13. Woe to them, for they have departed from me:  they shall be wasted
because they have transgressed against me:  and I redeemed them:  and
they have spoken lies against me.

7:14. And they have not cried to me with their heart, but they howled
in their beds:  they have thought upon wheat and wine, they are departed
from me.

7:15. And I have chastised them, and strengthened their arms:  and they
have imagined evil against me.

7:16. They returned, that they might be without yoke:  they became like
a deceitful bow:  their princes shall fall by the sword, for the rage of
their tongue.  This is their derision in the land of Egypt.



Osee Chapter 8


The Israelites are threatened with destruction for their impiety and
idolatry.

8:1. Let there be a trumpet in thy throat like an eagle upon the house
of the Lord:  because they have transgressed my covenant, and have
violated my law.

8:2. They shall call upon me:  O my God, we, Israel, know thee.

8:3. Israel hath cast off the thing that is good, the enemy shall
pursue him.

8:4. They have reigned, but not by me:  they have been princes, and I
knew not:  of their silver and their gold they have made idols to
themselves, that they might perish.

8:5. Thy calf, O Samaria, is cast off, my wrath is kindled against
them.  How long will they be incapable of being cleansed?

8:6. For itself also is the invention of Israel:  a workman made it, and
it is no god:  for the calf of Samaria shall be turned to spiders' webs.

8:7. For they shall sow wind, and reap a whirlwind, there is no
standing stalk in it, the bud shall yield no meal; and if it should
yield, strangers shall eat it.

8:8. Israel is swallowed up:  now is he become among the nations like an
unclean vessel.

8:9. For they are gone up to Assyria, a wild ass alone by himself:
Ephraim hath given gifts to his lovers.

8:10. But even though they shall have hired the nations, now will I
gather them together:  and they shall rest a while from the burden of
the king, and the princes.

8:11. Because Ephraim hath made many altars to sin:  altars are become
to him unto sin.

8:12. I shall write to him my manifold laws, which have been accounted
as foreign.

8:13. They shall offer victims, they shall sacrifice flesh, and shall
eat it, and the Lord will not receive them:  now will he remember their
iniquity, and will visit their sins:  they shall return to Egypt.

8:14. And Israel hath forgotten his Maker, and hath built temples:  and
Juda hath built many fenced cities:  and I will send a fire upon his
cities, and it shall devour the houses thereof.



Osee Chapter 9


The distress and captivity of Israel for their sins and idolatry.

9:1. Rejoice not, O Israel:  rejoice not as the nations do:  for thou
hast committed fornication against thy God, thou hast loved a reward
upon every cornfloor.

9:2. The floor and the winepress shall not feed them, and the wine
shall deceive them.

9:3. They shall not dwell in the Lord's land:  Ephraim is returned to
Egypt, and hath eaten unclean things among the Assyrians.

9:4. They shall not offer wine to the Lord, neither shall they please
him:  their sacrifices shall be like the bread of mourners:  all that
shall eat it shall be defiled:  for their bread is life for their soul,
it shall not enter into the house of the Lord.

9:5. What will you do in the solemn day, in the day of the feast of the
Lord?

9:6. For behold they are gone because of destruction:  Egypt shall
gather them together, Memphis shall bury them:  nettles shall inherit
their beloved silver, the bur shall be in their tabernacles.

9:7. The days of visitation are come, the days of repaying are come:
know ye, O Israel, that the prophet was foolish, the spiritual man was
mad, for the multitude of thy iniquity, and the multitude of thy
madness.

9:8. The watchman of Ephraim was with my God:  the prophet is become a
snare of ruin upon all his ways, madness is in the house of his God.

9:9. They have sinned deeply, as in the days of Gabaa:  he will remember
their iniquity, and will visit their sin.

9:10. I found Israel like grapes in the desert, I saw their fathers
like the firstfruits of the fig tree in the top thereof:  but they went
in to Beelphegor, and alienated themselves to that confusion, and
became abominable, as those things were, which they loved.

9:11. As for Ephraim, their glory hath flown away like bird from the
birth, and from the womb, and from the conception.

9:12. And though they should bring up their children, I will make them
without children among men:  yea, and woe to them, when I shall depart
from them.

9:13. Ephraim, as I saw, was a Tyre, founded in beauty:  and Ephraim
shall bring out his children to the murderer.

9:14. Give them, O Lord.  What wilt thou give them?  Give them a womb
without children, and dry breasts.

9:15. All their wickedness is in Galgal, for there I hated them:  for
the wickedness of their devices I will cast them forth out of my house:
I will love them no more, all their princes are revolters.

9:16. Ephraim is struck, their root is dried up, they shall yield no
fruit.  And if they should have issue, I will slay the best beloved
fruit of their womb.

9:17. My God will cast them away, because they hearkened not to him:
and they shall be wanderers among the nations.



Osee Chapter 10


After many benefits, great affliction shall fall upon the ten tribes,
for their ingratitude to God.

10:1. Israel a vine full of branches, the fruit is agreeable to it:
according to the multitude of his fruit, he hath multiplied altars,
according to the plenty of his land he hath abounded with idols.

10:2. Their heart is divided:  now they shall perish:  he shall break
down their idols, he shall destroy their altars.

10:3. For now they shall say:  We have no king:  because we fear not the
Lord:  and what shall a king do to us?

10:4. You speak words of an unprofitable vision, and you shall make a
covenant:  and judgment shall spring up as bitterness in the furrows of
the field.

10:5. The inhabitants of Samaria have worshipped the kine of Bethaven:
for the people thereof have mourned over it, and the wardens of its
temple that rejoiced over it in its glory because it is departed from
it.

The kine of Bethaven. . .The golden calves of Jeroboam.

10:6. For itself also is carried into Assyria, a present to the
avenging king:  shame shall fall upon Ephraim, and Israel shall be
confounded in his own will.

Itself also is carried, etc. . .One of the golden calves was given by
king Manahem, to Phul, king of the Assyrians, to engage him to stand by
him.

10:7. Samaria hath made her king to pass as froth upon the face of the
water.

10:8. And the high places of the idol, the sin of Israel shall be
destroyed:  the bur and the thistle shall grow up over their altars:  and
they shall say to the mountains Cover us; and to the hills:  Fall upon
us.

10:9. From the days of Gabaa, Israel hath sinned, there they stood:  the
battle in Gabaa against the children of iniquity shall not overtake
them.

10:10. According to my desire, I will chastise them:  and the nations
shall be gathered together against them, when they shall be chastised
for their two iniquities.

Their two iniquities. . .Their two calves.

10:11. Ephraim is a heifer taught to love to tread out corn, but I
passed over upon the beauty of her neck:  I will ride upon Ephraim, Juda
shall plough, Jacob shall break the furrows for himself.

10:12. Sow for yourselves in justice, and reap in the mouth of mercy,
break up your fallow ground:  but the time to seek the Lord is, when he
shall come that shall teach you justice.

10:13. You have ploughed wickedness, you have reaped iniquity, you have
eaten the fruit of lying:  because thou hast trusted in thy ways, in the
multitude of thy strong ones.

10:14. A tumult shall arise among thy people:  and all thy fortresses
shall be destroyed as Salmana was destroyed, by the house of him that
judged Baal in the day of battle, the mother being dashed in pieces
upon her children.

As Salmana, king of the Midianites, was destroyed by the house, that
is, by the followers of him that judged Baal; that is, of Gideon, who
threw down the altar of Baal; and was therefore called Jerubaal.  See
Judges 6 and 8.

10:15. So hath Bethel done to you, because of the evil of your
iniquities.



Osee Chapter 11


God proceeds in threatening Israel for their ingratitude:  yet he will
not utterly destroy them.

11:1. As the morning passeth, so hath the king of Israel passed away.
Because Israel was a child, and I loved him:  and I called my son out of
Egypt.

I called my son. . .Viz., Israel.  But as the calling of Israel out of
Egypt, was a figure of the calling of Christ from thence; therefore
this text is also applicable to Christ, as we learn from Matthew 2.15.

11:2. As they called them, they went away from before their face:  they
offered victims to Baalim, and sacrificed to idols.

They called. . .Viz., Moses and Aaron called; but they went away after
other gods and would not hear.

11:3. And I was like a foster father to Ephraim, I carried them in my
arms:  and they knew not that I healed them.

11:4. I will draw them with the cords of Adam, with the bands of love:
and I will be to them as one that taketh off the yoke on their jaws:
and I put his meat to him that he might eat.

11:5. He shall not return into the land of Egypt, but the Assyrian
shall be his king:  because they would not be converted.

11:6. The sword hath begun in his cities, and it shall consume his
chosen men, and shall devour their heads.

11:7. And my people shall long for my return:  but a yoke shall be put
upon them together, which shall not be taken off.

11:8. How shall I deal with thee, O Ephraim, shall I protect thee, O
Israel?  how shall I make thee as Adama, shall I set thee as Seboim?  my
heart is turned within me, my repentance is stirred up.

Adama, etc. . .Adama and Seboim were two cities in the neighborhood of
Sodom:  and underwent the like destruction.

11:9. I will not execute the fierceness of my wrath:  I will not return
to destroy Ephraim:  because I am God, and not man:  the holy one in the
midst of thee, and I will not enter into the city.

11:10. They shall walk after the Lord, he shall roar as a lion:  because
he shall roar, and the children of the sea shall fear.

11:11. And they shall fly away like a bird out of Egypt, and like a
dove out of the land of the Assyrians:  and I will place them in their
own houses, saith the Lord.

11:12. Ephraim hath compassed me about with denials, and the house of
Israel with deceit:  but Juda went down as a witness with God, and is
faithful with the saints.



Osee Chapter 12


Israel is reproved for sin.  God's favours to them.

12:1. Ephraim feedeth on the wind, and followeth the burning heat:  all
the day long he multiplied lies and desolation:  and he hath made a
covenant with the Assyrians, and carried oil into Egypt.

12:2. Therefore there is a judgment of the Lord with Juda, and a
visitation for Jacob:  he will render to him according to his ways, and
according to his devices.

12:3. In the womb he supplanted his brother:  and by his strength he had
success with an angel.

12:4. And he prevailed over the angel, and was strengthened:  he wept,
and made supplication to him:  he found him in Bethel, and there he
spoke with us.

12:5. Even the Lord God of hosts, the Lord is his memorial.

12:6. Therefore turn thou to thy God:  keep mercy and judgment, and hope
in thy God always.

12:7. He is like Chanaan, there is a deceitful balance in his hand, he
hath loved oppression.

12:8. And Ephraim said:  But yet I am become rich, I have found me an
idol:  all my labours shall not find me the iniquity that I have
committed.

12:9. And I that am the Lord thy God from the land of Egypt, will yet
cause thee to dwell in tabernacles, as in the days of the feast.

12:10. And I have spoken by the prophets, and I have multiplied
visions, and I have used similitudes by the ministry of the prophets.

12:11. If Galaad be an idol, then in vain were they in Galgal offering
sacrifices with bullocks:  for their altars also are as heaps in the
furrows of the field.

If Galaad be an idol, etc. . .That is, if Galaad with all its idols and
sacrifices be like a mere idol itself, being brought to nothing by
Theglathphalasar:  how vain is it to expect, that the idols worshipped
in Galgal shall be of any service to the tribes that remain.

12:12. Jacob fled into the country of Syria, and Israel served for a
wife, and was a keeper for a wife.

12:13. But the Lord by a prophet brought Israel out of Egypt:  and he
was preserved by a prophet.

12:14. Ephraim hath provoked me to wrath with his bitterness, and his
blood shall come upon him, and his Lord will render his reproach unto
him.



Osee Chapter 13


The judgments of God upon Israel for their sins.  Christ shall one day
redeem them.

13:1. When Ephraim spoke, a horror seized Israel:  and he sinned in
Baal, and died.

13:2. And now they have sinned more and more:  and they have made to
themselves a molten thing of their silver as the likeness of idols:  the
whole is the work of craftsmen:  to these that say:  Sacrifice men, ye
that adore calves.

13:3. Therefore they shall be as a morning cloud, and as the early dew
that passeth away, as the dust that is driven with a whirlwind out of
the floor, and as the smoke out of the chimney.

13:4. But I am the Lord thy God from the land of Egypt:  and thou shalt
know no God but me, and there is no saviour beside me.

13:5. I knew thee in the desert, in the land of the wilderness.

13:6. According to their pastures they were filled, and were made full:
and they lifted up their heart, and have forgotten me.

13:7. And I will be to them as a lioness, as a leopard in the way of
the Assyrians.

13:8. I will meet them as a bear that is robbed of her whelps, and I
will rend the inner parts of their liver:  and I will devour them there
as a lion, the beast of the field shall tear them.

13:9. Destruction is thy own, O Israel:  thy help is only in me.

13:10. Where is thy king?  now especially let him save thee in all thy
cities:  and thy judges, of whom thou saidst:  Give me kings and princes.

13:11. I will give thee a king in my wrath, and will take him away in
my indignation.

13:12. The iniquity of Ephraim is bound up, his sin is hidden.

13:13. The sorrows of a woman in labour shall come upon him, he is an
unwise son:  for now he shall not stand in the breach of the children.

13:14. I will deliver them out of the hand of death.  I will redeem them
from death:  O death, I will be thy death; O hell, I will be thy bite:
comfort is hidden from my eyes.

13:15. Because he shall make a separation between brothers:  the Lord
will bring a burning wind that shall rise from the desert, and it shall
dry up his springs, and shall make his fountain desolate, and he shall
carry off the treasure of every desirable vessel.



Osee Chapter 14


Samaria shall be destroyed.  An exhortation to repentance:  God's favour
through Christ to the penitent.

14:1. Let Samaria perish, because she hath stirred up her God to
bitterness:  let them perish by the sword, let their little ones be
dashed, and let the women with child be ripped up.

Perish, because she hath stirred up her God to bitterness. . .It is not
a curse or imprecation, but a prophecy of what should come to pass.

14:2. Return, O Israel, to the Lord thy God:  for thou hast fallen down
by thy iniquity.

14:3. Take with you words, and return to the Lord, and say to him:  Take
away all iniquity, and receive the good:  and we will render the calves
of our lips.

14:4. Assyria shall not save us, we will not ride upon horses, neither
will we say any more:  The works of our hands are our gods:  for thou
wilt have mercy on the fatherless that is in thee.

14:5. I will heal their breaches, I will love them freely:  for my wrath
is turned away from them.

14:6. I will be as the dew, Israel shall spring as the lily, and his
root shall shoot forth as that of Libanus.

14:7. His branches shall spread, and his glory shall be as the olive
tree:  and his smell as that of Libanus.

14:8. They shall be converted that sit under his shadow:  they shall
live upon wheat, and they shall blossom as a vine:  his memorial shall
be as the wine of Libanus.

14:9. Ephraim shall say, What have I to do any more with idols?  I will
hear him, and I will make him flourish like a green fir tree:  from me
is thy fruit found.

14:10. Who is wise, and he shall understand these things?  prudent, and
he shall know these things?  for the ways of the Lord are right, and the
just shall walk in them:  but the transgressors shall fall in them.




THE PROPHECY OF JOEL



JOEL, whose name, according to ST. JEROME, signifies THE LORD GOD:  or,
as others say, THE COMING DOWN OF GOD:  prophesied about the same time
in the kingdom of Judea, as OSEE did in the kingdom of Israel.  He
foretells under figure the great evils that were coming upon the people
for their sins:  earnestly exhorts them to repentance:  and comforts them
with the promise of a TEACHER OF JUSTICE, viz., CHRIST JESUS OUR LORD,
and of the coming down of his holy SPIRIT.



Joel Chapter 1


The prophet describes the judgments that shall fall upon the people,
and invites them to fasting and prayer.

1:1. The word of the Lord, that came to Joel, the son of Phatuel.

1:2. Hear this, ye old men, and give ear, all ye inhabitants of the
land:  did this ever happen in your days, or in the days of your
fathers?

1:3. Tell ye of this to your children, and let your children tell their
children, and their children to another generation.

1:4. That which the palmerworm hath left, the locust hath eaten:  and
that which the locust hath left, the bruchus hath eaten:  and that which
the bruchus hath left, the mildew hath destroyed.

That which the palmerworm hath left, etc. . .Some understand this
literally of the desolation of the land by these insects:  others
understand it of the different invasions of the Chaldeans, or other
enemies.

1:5. Awake, ye that are drunk, and weep, and mourn all ye that take
delight; in drinking sweet wine:  for it is cut off from your mouth.

1:6. For a nation come up upon my land, strong, and without number:  his
teeth are like the teeth of a lion:  and his cheek teeth as of a lion's
whelp.

1:7. He hath laid my vineyard waste, and hath pilled off the bark of my
fig tree:  he hath stripped it bare, and cast it away; the branches
thereof are made white.

1:8. Lament like a virgin girded with sackcloth for the husband of her
youth.

1:9. Sacrifice and libation is cut off from the house of the Lord:  the
priests, the Lord's ministers, have mourned:

1:10. The country is destroyed, the ground hath mourned:  for the corn
is wasted, the wine is confounded, the oil hath languished.

1:11. The husbandmen are ashamed, the vinedressers have howled for the
wheat, and for the barley, because the harvest of the field is
perished.

1:12. The vineyard is confounded, and the fig tree hath languished:  the
pomegranate tree, and the palm tree, and the apple tree, and all the
trees of the field are withered:  because joy is withdrawn from the
children of men.

1:13. Gird yourselves, and lament, O ye priests, howl, ye ministers of
the altars:  go in, lie in sackcloth, ye ministers of my God:  because
sacrifice and libation is cut off from the house of your God.

1:14. Sanctify ye a fast, call an assembly, gather together the
ancients, all the inhabitants of the land into the house of your God:
and cry ye to the Lord:

1:15. Ah, ah, ah, for the day:  because the day of the Lord is at hand,
and it shall come like destruction from the mighty.

1:16. Is not your food cut off before your eyes, joy and gladness from
the house of our God?

1:17. The beasts have rotted in their dung, the barns are destroyed,
the storehouses are broken down:  because the corn is confounded.

1:18. Why did the beasts groan, why did the herds of cattle low?
because there is no pasture for them:  yea, and the flocks of sheep are
perished.

1:19. To thee, O Lord, will I cry:  because fire hath devoured the
beautiful places of the wilderness:  and the flame hath burnt all the
trees of the country.

1:20. Yea, and the beasts of the field have looked up to thee, as a
garden bed that thirsteth after rain, for the springs of waters are
dried up, and fire hath devoured the beautiful places of the
wilderness.



Joel Chapter 2


2:1. Blow ye the trumpet in Sion, sound an alarm in my holy mountain,
let all the inhabitants of the land tremble:  because the day of the
Lord cometh, because it is nigh at hand.

The day of the Lord. . .That is, the time when he will execute justice
upon sinners.

2:2. A day of darkness, and of gloominess, a day of clouds and
whirlwinds:  a numerous and strong people as the morning spread upon the
mountains:  the like to it hath not been from the beginning, nor shall
be after it, even to the years of generation and generation.

A numerous and strong people. . .The Assyrians, or Chaldeans.  Others
understand all this of an army of locusts laying waste the land.

2:3. Before the face thereof a devouring fire, and behind it a burning
flame:  the land is like a garden of pleasure before it, and behind it a
desolate wilderness, neither is there any one that can escape it.

2:4. The appearance of them is as the appearance of horses, and they
shall run like horsemen.

2:5. They shall leap like the noise of chariots upon the tops of
mountains, like the noise of a flame of fire devouring the stubble, as
a strong people prepared to battle.

2:6. At their presence the people shall be in grievous pains:  all faces
shall be made like a kettle.

2:7. They shall run like valiant men:  like men of war they shall scale
the wall:  the men shall march every one on his way, and they shall not
turn aside from their ranks.

2:8. No one shall press upon his brother:  they shall walk every one in
his path:  yea, and they shall fall through the windows, and shall take
no harm.

2:9. They shall enter into the city:  they shall run upon the wall, they
shall climb up the houses, they shall come in at the windows, as a
thief.

2:10. At their presence the earth hath trembled, the heavens are moved:
the sun and moon are darkened, and the stars have withdrawn their
shining.

2:11. And the Lord hath uttered his voice before the face of his army:
for his armies are exceedingly great, for they are strong, and execute
his word:  for the day of the Lord is great and very terrible:  and who
can stand it?

2:12. Now, therefore, saith the Lord.  Be converted to me with all your
heart, in fasting, and in weeping, and mourning.

2:13. And rend your hearts, and not your garments and turn to the Lord
your God:  for he is gracious and merciful, patient and rich in mercy,
and ready to repent of the evil.

2:14. Who knoweth but he will return, and forgive, and leave a blessing
behind him, sacrifice and libation to the Lord your God?

2:15. Blow the trumpet in Sion, sanctify a fast, call a solemn
assembly,

2:16. Gather together the people, sanctify the church, assemble the
ancients, gather together the little ones, and them that suck at the
breasts:  let the bridegroom go forth from his bed, and the bride out of
her bridal chamber.

2:17. Between the porch and the altar the priests, the Lord's
ministers, shall weep, and shall say:  Spare, O Lord, spare thy people:
and give not thy inheritance to reproach, that the heathens should rule
over them.  Why should they say among the nations:  Where is their God?

2:18. The Lord hath been zealous for his land, and hath spared his
people.

2:19. And the Lord answered, and said to his people:  Behold I will send
you corn, and wine, and oil, and you shall be filled with them:  and I
will no more make you a reproach among the nations.

2:20. And I will remove far off from you the northern enemy:  and I will
drive him into a land unpassable, and desert, with his face towards the
east sea, and his hinder part towards the utmost sea:  and his stench
shall ascend, and his rottenness shall go up, because he hath done
proudly.

The northern enemy. . .Some understand this of Holofernes and his army:
others, of the locusts.

2:21. Fear not, O land, be glad, and rejoice:  for the Lord hath done
great things.

2:22. Fear not, ye beasts of the fields:  for the beautiful places of
the wilderness are sprung, for the tree hath brought forth its fruit,
the fig tree, and the vine have yielded their strength.

2:23. And you, O children of Sion, rejoice, and be joyful in the Lord
your God:  because he hath given you a teacher of justice, and he will
make the early and the latter rain to come down to you as in the
beginning.

2:24. And the floors shall be filled with wheat, and the presses shall
overflow with wine, and oil.

2:25. And I will restore to you the years which the locust, and the
bruchus, and the mildew, and the palmerworm hath eaten; my great host
which I sent upon you.

2:26. And you shall eat in plenty, and shall be filled and you shall
praise the name of the Lord your God; who hath done wonders with you,
and my people shall not be confounded for ever.

2:27. And you shall know that I am in the midst of Israel:  and I am the
Lord your God, and there is none besides:  and my people shall not be
confounded forever.

2:28. And it shall come to pass after this, that I will pour out my
spirit upon all flesh:  and your sons and your daughters shall prophesy:
your old men shall dream dreams, and your young men shall see visions.

2:29. Moreover, upon my servants and handmaids in those days I will
pour forth my spirit.

2:30. And I will shew wonders in heaven; and in earth, blood, and fire,
and vapour of smoke.

2:31. The sun shall be turned into darkness, and the moon into blood:
before the great and dreadful day of the Lord doth come.

2:32. And it shall come to pass, that every one that shall call upon
the name of the Lord, shall be saved:  for in Mount Sion, and in
Jerusalem shall be salvation, as the Lord hath said, and in the residue
whom the Lord shall call.



Joel Chapter 3


3:1. For behold in those days, and in that time when I shall bring back
the captivity of Juda, and Jerusalem:

3:2. I will gather together all nations and will bring them down into
the valley of Josaphat:  and I will plead with them there for my people,
and for my inheritance, Israel, whom they have scattered among the
nations, and have parted my land.

3:3. And they have cast lots upon my people:  and the boy they have put
in the stews, and the girl they have sold for wine, that they might
drink.

3:4. But what have you to do with me, O Tyre, and Sidon, and all the
coast of the Philistines?  will you revenge yourselves on me?  and if you
revenge yourselves on me, I will very soon return you a recompense upon
your own head.

3:5. For you have taken away my silver, and my gold:  and my desirable,
and most beautiful things you have carried into your temples.

3:6. And the children of Juda, and the children of Jerusalem, you have
sold to the children of the Greeks, that you might remove them far off
from their own country.

3:7. Behold, I will raise them up out of the place wherein you have
sold them:  and I will return your recompense upon your own heads.

3:8. And I will sell your sons, and your daughters, by the hands of the
children of Juda, and they shall sell them to the Sabeans, a nation far
off, for the Lord hath spoken it.

3:9. Proclaim ye this among the nations:  Prepare war, raise up the
strong:  let them come, let all the men of war come up.

3:10. Cut your ploughshares into swords, and your spades into spears.
Let the weak say:  I am strong.

3:11. Break forth, and come, all ye nations from round about, and
gather yourselves together:  there will the Lord cause all thy strong
ones to fall down.

3:12. Let them arise, and let the nations come up into the valley of
Josaphat:  for there I will sit to judge all nations round about.

3:13. Put ye in the sickles, for the harvest is ripe:  come and go down,
for the press is full, the fats run over:  for their wickedness is
multiplied.

3:14. Nations, nations in the valley of destruction:  for the day of the
Lord is near in the valley of destruction.

3:15. The sun and the moon are darkened, and the stars have withdrawn
their shining.

3:16. And the Lord shall roar out of Sion, and utter his voice from
Jerusalem:  and the heavens and the earth shall be moved, and the Lord
shall be the hope of his people, and the strength of the children of
Israel.

3:17. And you shall know that I am the Lord your God, dwelling in Sion,
my holy mountain:  and Jerusalem shall be holy, and strangers shall pass
through it no more.

3:18. And it shall come to pass in that day, that the mountains shall
drop down sweetness, aud the hills shall flow with milk:  and waters
shall flow through all the rivers of Juda:  and a fountain shall come
forth of the house of the Lord, and shall water the torrent of thorns.

A fountain shall come forth of the house of the Lord, etc. . .Viz., the
fountain of grace in the church militant, and of glory in the church
triumphant:  which shall water the torrent or valley of thorns, that is,
the souls that before, like barren ground brought forth nothing but
thorns; or that were afflicted with the thorns of crosses and
tribulations.

3:19. Egypt shall be a desolation, and Edom a wilderness destroyed:
because they have done unjustly against the children of Juda, and have
shed innocent blood in their land.

3:20. And Judea shall be inhabited for ever, and Jerusalem to
generation and generation.

Judea--and Jerusalem. . .That is, the spiritual Jerusalem, viz., the
church of Christ.

3:21. And I will cleanse their blood, which I had not cleansed:  and the
Lord will dwell in Sion.




THE PROPHECY OF AMOS



AMOS prophesied in Israel about the same time as OSEE:  and was called
from following the cattle to denounce GOD'S judgments to the people of
Israel, and the neighbouring nations, for their repeated crimes, in
which they continued without repentance.



Amos Chapter 1


The prophet threatens Damascus, Gaza, Tyre, Edom, and Ammon with the
judgments of God, for their obstinacy in sin.

1:1. The words of Amos, who was among the herdsmen of Thecua:  which he
saw concerning Israel in the days of Ozias king of Juda, and in the
days of Jeroboam the son of Joas king of Israel two years before the
earthquake.

The earthquake. . .Many understand this of a great earthquake, which
they say was felt at the time that king Ozias attempted to offer
incense in the temple.  But the best chronologists prove that the
earthquake here spoken of must have been before that time:  because
Jeroboam the second, under whom Amos prophesied, was dead long before
that attempt of Ozias.

1:2. And he said:  The Lord will roar from Sion, and utter his voice
from Jerusalem:  and the beautiful places of the shepherds have mourned,
and the top of Carmel is withered.

1:3. Thus saith the Lord:  For three crimes of Damascus, and for four I
will not convert it:  because they have thrashed Galaad with iron wains.

For three crimes--and for four. . .That is, for their many unrepented of
crimes.--Ibid.  I will not convert it. . .That is, I will not spare them,
nor turn away the punishments I design to inflict upon them.

1:4. And I will send a fire into the house of Azael, and it shall
devour the houses of Benadad.

1:5. And I will break the bar of Damascus:  and I will cut off the
inhabitants from the plain of the idol, and him that holdeth the
sceptre from the house of pleasure:  and the people of Syria shall be
carried away to Cyrene, saith the Lord.

1:6. Thus saith the Lord:  For three crimes of Gaza, and for four I will
not convert it:  because they have carried away a perfect captivity to
shut them up in Edom.

1:7. And I will send a fire on the wall of Gaza, and it shall devour
the houses thereof.

1:8. And I will cut off the inhabitant from Azotus, and him that
holdeth the sceptre from Ascalon:  and I will turn my hand against
Accaron, and the rest of the Philistines shall perish, saith the Lord
God.

1:9. Thus saith the Lord:  For three crimes of Tyre, and for four I will
not convert it:  because they have shut up an entire captivity in Edom,
and have not remembered the covenant of brethren.

1:10. And I will send a fire upon the wall of Tyre, and it shall devour
the houses thereof.

1:11. Thus saith the Lord:  For three crimes of Edom, and for four I
will not convert him:  because he hath pursued his brother with the
sword, and hath carried on his fury, and hath kept his wrath to the
end.

1:12. I will send a fire into Theman:  and it shall devour the houses of
Bosra.

1:13. Thus saith the Lord:  For three crimes of the children of Ammon,
and for four I will not convert him:  because he hath ripped up the
women with child of Galaad to enlarge his border.

1:14. And I will kindle a fire in the wall of Rabba:  and it shall
devour the houses thereof with shouting in the day of battle, and with
a whirlwind in the day of trouble.

1:15. And Melchom shall go into captivity, both he, and his princes
together, saith the Lord.

Melchom. . .The god or idol of the Ammonites, otherwise called Moloch,
and Melech:  which in Hebrew signifies a king, and Melchom their king.



Amos Chapter 2


The judgments with which God threatens Moab, Juda, and Israel for their
sins, and their ingratitude.

2:1. Thus saith the Lord:  For three crimes of Moab, and for four I will
not convert him:  because he hath burnt the bones of the king of Edom
even to ashes.

2:2. And I will send a fire into Moab, and it shall devour the houses
of Carioth:  and Moab shall die with a noise, with the sound of the
trumpet:

2:3. And I will cut off the judge from the midst thereof, and will slay
all his princes with him, saith the Lord.

2:4. Thus saith the Lord:  For three crimes of Juda, and for four I will
not convert him:  because he hath cast away the law of the Lord, and
hath not kept his commandments:  for their idols have caused them to
err, after which their fathers have walked.

2:5. And I will send a fire into Juda, and it shall devour the houses
of Jerusalem.

2:6. Thus saith the Lord:  For three crimes of Israel, and for four I
will not convert him:  because he hath sold the just man for silver, and
the poor man for a pair of shoes.

2:7. They bruise the heads of the poor upon the dust of the earth, and
turn aside the way of the humble:  and the son and his father have gone
to the same young woman, to profane my holy name.

2:8. And they sat down upon garments laid to pledge by every altar:  and
drank the wine of the condemned in the house of their God.

2:9. Yet I cast out the Amorrhite before their face:  whose height was
like the height of cedars, and who was strong as an oak:  and I
destroyed his fruit from above, and his roots beneath.

2:10. It is I that brought you up out of the land of Egypt, and I led
you forty years through the wilderness, that you might possess the land
of the Amorrhite.

2:11. And I raised up of your sons for prophets, and of your young men
for Nazarites.  Is it not so, O ye children of Israel, saith the Lord?

2:12. And you will present wine to the Nazarites:  and command the
prophets, saying:  Prophesy not.

2:13. Behold, I will screak under you as a wain screaketh that is laden
with hay.

I will screak. . .Unable to bear any longer the enormous load of your
sins, etc.  The spirit of God, as St. Jerome takes notice, accommodates
himself to the education of the prophet and inspires him with
comparisons taken from country affairs.

2:14. And flight shall perish from the swift, and the valiant shall not
possess his strength, neither shall the strong save his life.

2:15. And he that holdeth the bow shall not stand, and the swift of
foot shall not escape, neither shall the rider of the horse save his
life.

2:16. And the stout of heart among the valiant shall flee away naked in
that day, saith the Lord.



Amos Chapter 3


The evils that shall fall upon Israel for their sins.

3:1. Hear the word that the Lord hath spoken concerning you, O ye
children of Israel:  concerning the whole family that I brought up out
of the land of Egypt, saying:

3:2. You only have I known of all the families of the earth:  therefore
will I visit upon you all your iniquities.

Visit upon. . .That is, punish.

3:3. Shall two walk together except they be agreed?

3:4. Will a lion roar in the forest, if he have no prey?  will the
lion's whelp cry out of his den, if he have taken nothing?

3:5. Will the bird fall into the snare upon the earth, if there be no
fowler?  Shall the snare be taken up from the earth, before it hath
taken somewhat?

3:6. Shall the trumpet sound in a city, and the people not be afraid?
Shall there be evil in a city, which the Lord hath not done?

Evil in a city. . .He speaks of the evil of punishments of war, famine,
pestilence, desolation, etc., but not of the evil of sin, of which God
is not the author.

3:7. For the Lord God doth nothing without revealing his secret to his
servants the prophets.

3:8. The lion shall roar, who will not fear?  The Lord God hath spoken,
who shall not prophesy?

3:9. Publish it in the houses of Azotus, and in the houses of the land
of Egypt, and say:  Assemble yourselves upon the mountains of Samaria,
and behold the many follies in the midst thereof, and them that suffer
oppression in the inner rooms thereof.

3:10. And they have not known to do the right thing, saith the Lord,
storing up iniquity, and robberies in their houses.

3:11. Therefore thus saith the Lord God:  The land shall be in
tribulation, and shall be compassed about:  and thy strength shall be
taken away from thee, and thy houses shall be spoiled.

3:12. Thus saith the Lord:  As if a shepherd should get out of the
lion's mouth two legs, or the tip of the ear:  so shall the children of
Israel be taken out that dwell in Samaria, in a place of a bed, and in
the couch of Damascus.

3:13. Hear ye, and testify in the house of Jacob, saith the Lord the
God of hosts:

3:14. That in the day when I shall begin to visit the transgressions of
Israel, I will visit upon him, and upon the altars of Bethel:  and the
horns of the altars shall be cut off, and shall fall to the ground.

3:15. And I will strike the winter house with the summer house:  and the
houses of ivory shall perish, and many houses shall be destroyed, saith
the Lord.



Amos Chapter 4


The Israelites are reproved for their oppressing the poor, for their
idolatry, and their incorrigibleness.

4:1. Hear this word, ye fat kine that are in the mountains of Samaria:
you that oppress the needy, and crush the poor:  that say to your
masters:  Bring, and we will drink.

Fat kine. . .He means the great ones that lived in plenty and wealth.

4:2. The Lord God hath sworn by his holiness, that lo, the days shall
come upon you, when they shall lift you up on pikes, and what shall
remain of you in boiling pots.

4:3. And you shall go out at the breaches one over against the other,
and you shall be cast forth into Armon, saith the Lord.

Armon. . .A foreign country; some understand it of Armenia.

4:4. Come ye to Bethel, and do wickedly:  to Galgal, and multiply
transgressions:  and bring in the morning your victims, your tithes in
three days.

4:5. And offer a sacrifice of praise with leaven:  and call free
offerings, and proclaim it:  for so you would do, O children of Israel,
saith the Lord God.

4:6. Whereupon I also have given you dulness of teeth in all your
cities, and want of bread in all your places:  yet you have not returned
to me, saith the Lord.

4:7. I also have withholden the rain from you, when there were yet
three months to the harvest:  and I caused it to rain upon on city, and
caused it not to rain upon another city:  one piece was rained upon:  and
the piece whereupon I rained not, withered.

4:8. And two and three cities went to one city to drink water, and were
not filled:  yet you returned not to me, saith the Lord.

4:9. I struck you with a burning wind, and with mildew, the palmerworm
hath eaten up your many gardens, and your vineyards:  your olive groves,
and fig groves:  yet you returned not to me, saith the Lord.

4:10. I sent death upon you in the way of Egypt, I slew your young men
with the sword, even to the captivity of your horses:  and I made the
stench of your camp to come up into your nostrils:  yet you returned not
to me, saith the Lord.

4:11. I destroyed some of you, as God destroyed Sodom and Gomorrha, and
you were as a firebrand plucked out of the burning:  yet you returned
not to me, saith the Lord.

4:12. Therefore I will do these things to thee, O Israel:  and after I
shall have done these things to thee, be prepared to meet thy God, O
Israel.

4:13. For behold he that formeth the mountains and createth the wind,
and declareth his word to man, he that maketh the morning mist, and
walketh upon the high places of the earth:  the Lord the God of hosts is
his name.



Amos Chapter 5


A lamentation for Israel:  an exhortation to return to God.

5:1. Hear ye this word, which I take up concerning you for a
lamentation.  The house of Israel is fallen, and it shall rise no more.

5:2. The virgin of Israel is cast down upon her land, there is none to
raise her up.

5:3. For thus saith the Lord God:  The city, out of which came forth a
thousand, there shall be left in it a hundred:  and out of which there
came a hundred, there shall be left in it ten, in the house of Israel.

5:4. For thus saith the Lord to the house of Israel:  Seek ye me, and
you shall live.

5:5. But seek not Bethel, and go not into Galgal, neither shall you
pass over to Bersabee:  for Galgal shall go into captivity, and Bethel
shall be unprofitable.

Bethel,--Galgal,--Bersabee. . .The places where they worshipped their
idols.

5:6. Seek ye the Lord, and live:  lest the house of Joseph be burnt with
fire, and it shall devour, and there shall be none to quench Bethel.

5:7. You that turn judgment into wormwood, and forsake justice in the
land,

5:8. Seek him that maketh Arcturus, and Orion, and that turneth
darkness into morning, and that changeth day into night:  that calleth
the waters of the sea, and poureth them out upon the face of the earth:
The Lord is his name.

Arcturus and Orion. . .Arcturus is a bright star in the north:  Orion a
beautiful constellation in the south.

5:9. He that with a smile bringeth destruction upon the strong, and
waste upon the mighty.

With a smile. . .That is, with all ease, and without making any effort.

5:10. They have hated him that rebuketh in the gate:  and have abhorred
him that speaketh perfectly.

5:11. Therefore because you robbed the poor, and took the choice prey
from him:  you shall build houses with square stone, and shall not dwell
in them:  you shall plant most delightful vineyards, and shall not drink
the wine of them.

5:12. Because I know your manifold crimes, and your grievous sins:
enemies of the just, taking bribes, and oppressing the poor in the
gate.

5:13. Therefore the prudent shall keep silence at that time, for it is
an evil time.

5:14. Seek ye good, and not evil, that you may live:  and the Lord the
God of hosts will be with you, as you have said.

5:15. Hate evil, and love good, and establish judgment in the gate:  it
may be the Lord the God of hosts may have mercy on the remnant of
Joseph.

5:16. Therefore thus saith the Lord the God of hosts the sovereign
Lord:  In every street there shall be wailing:  and in all places that
are without, they shall say:  Alas, alas! and they shall call the
husbandman to mourning, and such as are skilful in lamentation to
lament.

5:17. And in all vineyards there shall be wailing:  because I will pass
through in the midst of thee, saith the Lord.

5:18. Woe to them that desire the day of the Lord:  to what end is it
for you?  the day of the Lord is darkness, and not light.

5:19. As if a man should flee from the face of a lion, and a bear
should meet him:  or enter into the house, and lean with his hand upon
the wall, and a serpent should bite him.

5:20. Shall not the day of the Lord be darkness, and not light:  and
obscurity, and no brightness in it?

5:21. I hate, and have rejected your festivities:  and I will not
receive the odour of your assemblies.

5:22. And if you offer me holocausts, and your gifts, I will not
receive them:  neither will I regard the vows of your fat beasts.

5:23. Take away from me the tumult of thy songs:  and I will not hear
the canticles of thy harp.

5:24. But judgment shall be revealed as water, and justice as a mighty
torrent.

5:25. Did you offer victims and sacrifices to me in the desert for
forty years, O house of Israel?

Did you offer, etc. . .Except the sacrifices that were offered at the
first, in the dedication of the tabernacle, the Israelites offered no
sacrifices in the desert.

5:26.But you carried a tabernacle for your Moloch, and the image of
your idols, the star of your god, which you made to yourselves.

A tabernacle, etc. . .All this alludes to the idolatry which they
committed, when they were drawn away by the daughters of Moab to the
worship of their gods.  Num. 25.

5:27. And I will cause you to go into captivity beyond Damascus, saith
the Lord, the God of hosts is his name.



Amos Chapter 6


The desolation of Israel for their pride and luxury.

6:1. Woe to you that are wealthy in Sion, and to you that have
confidence in the mountain of Samaria:  ye great men, heads of the
people, that go in with state into the house of Israel.

6:2. Pass ye over to Chalane, and see, and go from thence into Emath
the great:  and go down into Geth of the Philistines, and to all the
best kingdoms of these:  if their border be larger than your border.

6:3. You that are separated unto the evil day:  and that approach to the
throne of iniquity;

6:4. You that sleep upon beds of ivory, and are wanton on your couches:
that eat the lambs out of the flock, and the calves out of the midst of
the herd;

6:5. You that sing to the sound of the psaltery:  they have thought
themselves to have instruments of music like David;

6:6. That drink wine in bowls, and anoint themselves with the best
ointments:  and they are not concerned for the affliction of Joseph.

6:7. Wherefore now they shall go captive at the head of them that go
into captivity:  and the faction of the luxurious ones shall be taken
away.

6:8. The Lord God hath sworn by his own soul, saith the Lord the God of
hosts:  I detest the pride of Jacob, and I hate his houses, and I will
deliver up the city with the inhabitants thereof.

6:9. And if there remain ten men in one house, they also shall die.

6:10. And a man's kinsman shall take him up, and shall burn him, that
he may carry the bones out of the house; and he shall say to him that
is in the inner rooms of the house:  Is there yet any with thee?

6:11. And he shall answer:  There is an end.  And he shall say to him:
Hold thy peace, and mention not the name of the Lord.

6:12. For behold the Lord hath commanded, and he will strike the
greater house with breaches, and the lesser house with clefts.

6:13. Can horses run upon the rocks, or can any one plough with
buffles?  for you have turned judgment into bitterness, and the fruit of
justice into wormwood.

6:14. You that rejoice in a thing of nought:  you that say:  Have we not
taken unto us horns by our own strength?

6:15. But behold, I will raise up a nation against you, O house of
Israel, saith the Lord the God of hosts; and they shall destroy you
from the entrance of Emath, even to the torrent of the desert.



Amos Chapter 7


The prophet sees, in three visions, evils coming upon Israel:  he is
accused of treason by the false priest of Bethel.

7:1. These things the Lord God shewed to me:  and behold the locust was
formed in the beginning of the shooting up of the latter rain, and lo,
it was the latter rain after the king's mowing.

The locust, etc. . .These judgments by locusts and fire, which, by the
prophet's intercession, were moderated, signify the former invasions of
the Assyrians under Phul and Theglathphalasar, before the utter
desolation of Israel by Salmanasar.

7:2. And it came to pass, that when they had made an end of eating the
grass of the land, I said:  O Lord God, be merciful, I beseech thee:  who
shall raise up Jacob, for he is very little?

7:3. The Lord had pity upon this:  It shall not be, said the Lord.

7:4. These things the Lord God shewed to me:  and behold the Lord called
for judgment unto fire, and it devoured the great deep, and ate up a
part at the same time.

7:5. And I said:  O Lord God, cease, I beseech thee, who shall raise up
Jacob, for he is a little one?

7:6. The Lord had pity upon this.  Yea this also shall not be, said the
Lord God.

7:7. These things the Lord shewed to me:  and behold the Lord was
standing upon a plastered wall, and in his hand a mason's trowel.

7:8. And the Lord said to me:  What seest thou, Amos?  And I said:  A
mason's trowel.  And the Lord said:  Behold, I will lay down the trowel
in the midst of my people Israel.  I will plaster them over no more.

7:9. And the high places of the idol shall be thrown down, and the
sanctuaries of Israel shall be laid waste:  and I will rise up against
the house of Jeroboam with the sword.

7:10. And Amasias the priest of Bethel sent to Jeroboam king of Israel,
saying:  Amos hath rebelled against thee in the midst of the house of
Israel:  the land is not able to bear all his words.

7:11. For thus saith Amos:  Jeroboam shall die by the sword, and Israel
shall be carried away captive out of their own land.

Jeroboam shall die by the sword. . .The prophet did not say this; but
that the Lord would rise up against the house of Jeroboam with the
sword:  which was verified, when Zacharias, the son and successor of
Jeroboam, was slain by the sword.  4 Kings 15.10.

7:12. And Amasias said to Amos:  Thou seer, go, flee away into the land
of Juda:  and eat bread there, and prophesy there.

7:13. But prophesy not again any more in Bethel:  because it is the
king's sanctuary, and it is the house of the kingdom.

7:14. And Amos answered and said to Amasias:  I am not a prophet, nor am
I the son of a prophet:  but I am a herdsman plucking wild figs.

I am not a prophet. . .That is, I am not a prophet by education:  nor is
prophesying my calling or profession:  but I am a herdsman, whom God was
pleased to send hither to prophesy to Israel.

7:15. And the Lord took me when I followed the flock, and the Lord said
to me:  Go, prophesy to my people Israel.

7:16. And now hear thou the word of the Lord:  Thou sayest, thou shalt
not prophesy against Israel, and thou shalt not drop thy word upon the
house of the idol.

The house of the idol. . .Viz., of the calf worshipped in Bethel.

7:17. Therefore thus saith the Lord:  Thy wife shall play the harlot in
the city, and thy sons and thy daughters shall fall by the sword, and
thy land shall be measured by a line:  and thou shalt die in a polluted
land, and Israel shall go into captivity out of their land.



Amos Chapter 8


Under the figure of a hook, which bringeth down the fruit, the
approaching desolation of Israel is foreshewed for their avarice and
injustices.

8:1. These things the Lord shewed to me:  and behold a hook to draw down
the fruit.

8:2. And he said:  What seest thou, Amos?  And I said:  A hook to draw
down fruit.  And the Lord said to me:  The end is come upon my people
Israel:  I will not again pass by them any more.

8:3. And the hinges of the temple shall screak in that day, saith the
Lord God:  many shall die:  silence shall be cast in every place.

8:4. Hear this, you that crush the poor, and make the needy of the land
to fail,

8:5. Saying:  When will the month be over, and we shall sell our wares:
and the sabbath, and we shall open the corn:  that we may lessen the
measure, and increase the sicle, and may convey in deceitful balances,

8:6. That we may possess the needy for money, and the poor for a pair
of shoes, and may sell the refuse of the corn?

8:7. The Lord hath sworn against the pride of Jacob:  surely I will
never forget all their works.

8:8. Shall not the land tremble for this, and every one mourn that
dwelleth therein:  and rise up altogether as a river, and be cast out,
and run down as the river of Egypt?

8:9. And it shall come to pass in that day, saith the Lord God, that
the sun shall go down at midday, and I will make the earth dark in the
day of light:

8:10. And I will turn your feasts into mourning, and all your songs
into lamentation:  and I will bring up sackcloth upon every back of
yours, and baldness upon every head:  and I will make it as the mourning
of an only son, and the latter end thereof as a bitter day.

8:11. Behold the days come, saith the Lord, and I will send forth a
famine into the land:  not a famine of bread, nor a thirst of water, but
of hearing the word of the Lord.

8:12. And they shall move from sea to sea, and from the north to the
east:  they shall go about seeking the word of the Lord, and shall not
find it.

8:13. In that day the fair virgins, and the young men shall faint for
thirst.

8:14. They that swear by the sin of Samaria, and say:  Thy God, O Dan,
liveth:  and the way of Bersabee liveth:  and they shall fall, and shall
rise no more.



Amos Chapter 9


The certainty of the desolation of Israel:  the restoring of the
tabernacle of David, and the conversion of the Gentiles to the church;
which shall flourish for ever.

9:1. I saw the Lord standing upon the altar, and he said:  Strike the
hinges, and let the lintels be shook:  for there is covetousness in the
head of them all, and I will slay the last of them with the sword:
there shall be no flight for them:  they shall flee, and he that shall
flee of them shall not be delivered.

9:2. Though they go down even to hell, thence shall my hand bring them
out:  and though they climb up to heaven, thence will I bring them down.

9:3. And though they be hid in the top of Carmel, I will search and
take them away from thence:  and though they hide themselves from my
eyes in the depth of the sea, there will I command the serpent and he
shall bite them.

9:4. And if they go into captivity before their enemies, there will I
command the sword, and it shall kill them.  And I will set my eyes upon
them for evil, and not for good.

9:5. And the Lord the God of hosts is he who toucheth the earth, and it
shall melt:  and all that dwell therein shall mourn:  and it shall rise
up as a river, and shall run down as the river of Egypt.

9:6. He that buildeth his ascension in heaven, and hath founded his
bundle upon the earth:  who calleth the waters of the sea, and poureth
them out upon the face of the earth, the Lord is his name.

His ascension. . .That is, his high throne.--Ibid.  His bundle. . .That
is, his church bound up together by the bands of one faith and communion.

9:7. Are not you as the children of the Ethiopians unto me, O children
of Israel, saith the Lord?  did not I bring up Israel, out of the land
of Egypt:  and the Philistines out of Cappadocia, and the Syrians out of
Cyrene?

As the children of the Ethiopians. . .That is, as black as they, by your
iniquities.

9:8. Behold the eyes of the Lord God are upon the sinful kingdom, and I
will destroy it from the face of the earth:  but yet I will not utterly
destroy the house of Jacob, saith the Lord.

9:9. For behold I will command, and I will sift the house of Israel
among all nations, as corn is sifted in a sieve:  and there shall not a
little stone fall to the ground.

9:10. All the sinners of my people shall fall by the sword:  who say:
The evils shall not approach, and shall not come upon us.

9:11. In that day I will raise up the tabernacle of David, that is
fallen:  and I will close up the breaches of the walls thereof, and
repair what was fallen:  and I will rebuild it as in the days of old.

9:12. That they may possess the remnant of Edom, and all nations,
because my name is invoked upon them:  saith the Lord that doth these
things.

9:13. Behold the days come, saith the Lord, when the ploughman shall
overtake the reaper, and the treader of grapes him that soweth seed:
and the mountains shall drop sweetness, and every hill shall be tilled.

Shall overtake, etc. . .By this is meant the great abundance of
spiritual blessings; which, as it were, by a constant succession, shall
enrich the church of Christ.

9:14. And I will bring back the captivity of my people Israel:  and they
shall build the abandoned cities, and inhabit them:  and they shall
plant vineyards, and drink the wine of them:  and shall make gardens,
and eat the fruits of them.  And I will plant them upon their own land:
and I will no more pluck them out of their land which I have given
them, saith the Lord thy God.




THE PROPHECY OF ABDIAS



ABDIAS, whose name is interpreted THE SERVANT OF THE LORD, is believed
to have prophesied about the same time as OSEE, JOEL, and AMOS:  though
some of the Hebrews, who believe him to be the same with ACHAB's
steward, make him much more ancient.  His prophecy is the shortest of
any in number of words, but yields to none, says ST. JEROME, in the
sublimity of mysteries.  It contains but one chapter.



Abdias Chapter 1


The destruction of Edom for their pride:  and the wrongs they did to
Jacob:  the salvation and victory of Israel.

1:1. The vision of Abdias.  Thus saith the Lord God to Edom:  We have
heard a rumour from the Lord, and he hath sent an ambassador to the
nations:  Arise, and let us rise up to battle against him.

1:2. Behold I have made thee small among the nations:  thou art
exceeding contemptible.

1:3. The pride of thy heart hath lifted thee up, who dwellest in the
clefts of the rocks, and settest up thy throne on high:  who sayest in
thy heart:  Who shall bring me down to the ground?

1:4. Though thou be exalted as an eagle, and though thou set thy nest
among the stars:  thence will I bring thee down, saith the Lord.

1:5. If thieves had gone in to thee, if robbers by night, how wouldst
thou have held thy peace?  would they not have stolen till they had
enough?  if the grapegatherers had come in to thee, would they not have
left thee at the least a cluster?

1:6. How have they searched Esau, how have they sought out his hidden
things?

1:7. They have sent thee out even to the border:  all the men of thy
confederacy have deceived thee:  the men of thy peace have prevailed
against thee:  they that eat with thee shall lay snares under thee:
there is no wisdom in him.

1:8. Shall not I in that day, saith the Lord, destroy the wise out of
Edom, and understanding out of the mount of Esau?

1:9. And thy valiant men of the south shall be afraid, that man may be
cut off from the mount of Esau.

1:10. For the slaughter, and for the iniquity against thy brother
Jacob, confusion shall cover thee, and thou shalt perish for ever.

1:11. In the day when thou stoodest against him, when strangers carried
away his army captive, and foreigners entered into his gates, and cast
lots upon Jerusalem:  thou also wast as one of them.

1:12. But thou shalt not look on in the day of thy brother, in the day
of his leaving his country:  and thou shalt not rejoice over the
children of Juda, in the day of their destruction:  and thou shalt not
magnify thy mouth in the day of distress.

Thou shalt not look, etc. . .or, thou shouldst not, etc.  It is a
reprehension for what they had done, and at the same time a declaration
that these things should not pass unpunished.--Ibid.  Thou shalt not
magnify thy mouth. . .That is, thou shalt not speak arrogantly against
the children of Juda as insulting them in their distress.

1:13. Neither shalt thou enter into the gate of my people in the day of
their ruin:  neither shalt thou also look on in his evils in the day of
his calamity:  and thou shalt not be sent out against his army in the
day of his desolation.

1:14. Neither shalt thou stand in the crossways to kill them that flee:
and thou shalt not shut up them that remain of him in the day of
tribulation.

1:15. For the day of the Lord is at hand upon all nations:  as thou hast
done, so shall it be done to thee:  he will turn thy reward upon thy own
head.

1:16. For as you have drunk upon my holy mountain, so all nations shall
drink continually:  and they shall drink, and sup up, and they shall be
as though they were not.

1:17. And in mount Sion shall be salvation, and it shall be holy, and
the house of Jacob shall possess those that possessed them.

1:18. And the house of Jacob shall be a fire, and the house of Joseph a
flame, and the house of Esau stubble:  and they shall be kindled in
them, and shall devour them:  and there shall be no remains of the house
of Esau, for the Lord hath spoken it.

1:19. And they that are toward the south, shall inherit the mount of
Esau, and they that are in the plains, the Philistines:  and they shall
possess the country of Ephraim, and the country of Samaria:  and
Benjamin shall possess Galaad.

1:20. And the captivity of this host of the children of Israel, all the
places of the Chanaanites even to Sarepta:  and the captivity of
Jerusalem that is in Bosphorus, shall possess the cities of the south.

1:21. And saviours shall come up into mount Sion to judge the mount of
Esau:  and the kingdom shall be for the Lord.




THE PROPHECY OF JONAS



JONAS prophesied in the reign of JEREBOAM the second:  as we learn from
4 Kings 14.25. To whom also he foretold his success in restoring all
the borders of Israel.  He was of GETH OPHER in the tribe of ZABULON,
and consequently of GALILEE:  which confutes that assertion of the
Pharisees, John 7.52, that no prophet ever rose out of GALILEE.  He
prophesied and prefigured in his own person the death and resurrection
of CHRIST:  and was the only one among the prophets that was sent to
preach to the Gentiles.



Jonas Chapter 1


Jonas being sent to preach in Ninive, fleeth away by sea:  a tempest
riseth:  of which he being found, by lot, to be the cause, is cast into
the sea, which thereupon is calmed.

1:1. Now the word of the Lord came to Jonas, the son of Amathi, saying:

1:2. Arise and go to Ninive, the great city, and preach in it:  For the
wickedness thereof is come up before me.

Nineve. . .The capital city of the Assyrian empire.

1:3. And Jonas rose up to flee into Tharsis from the face of the Lord,
and he went down to Joppe, and found a ship going to Tharsis:  and he
paid the fare thereof, and went down into it, to go with them to
Tharsis from the face of the Lord,

Tharsis. . .Which some take to be Tharsus of Cilicia, others to be
Tartessus of Spain, others to be Carthage.

1:4. But the Lord sent a great wind to the sea:  and a great tempest was
raised in the sea, and the ship was in danger to be broken.

1:5. And the mariners were afraid, and the men cried to their god:  and
they cast forth the wares that were in the ship, into the sea, to
lighten it of them:  and Jonas went down into the inner part of the
ship, and fell into a deep sleep.

A deep sleep. . .This is a lively image of the insensibility of sinners,
fleeing from God, and threatened on every side with his judgments:  and
yet sleeping as if they were secure.

1:6. And the ship master came to him and said to him:  Why art thou fast
asleep?  rise up call upon thy God, if so be that God will think of us
that we may not perish.

1:7. And they said every one to his fellow:  Come and let us cast lots,
that we may know why this evil is upon us.  And they cast lots, and the
lot fell upon Jonas.

1:8. And they said to him:  Tell us for what cause this evil is upon us,
what is thy business?  of what country art thou?  and whither goest thou?
or of what people art thou?

1:9. And he said to them:  I am a Hebrew, and I fear the Lord, and the
God of heaven, who made both the sea and the dry land.

1:10. And the men were greatly afraid, and they said to him:  Why hast
thou done this?  (For the men knew that he fled from the face of the
Lord:  because he had told them.)

1:11. And they said to him:  What shall we do with thee, that the sea
may be calm to us?  for the sea flowed and swelled.

1:12. And he said to them:  take me up, and cast me into the sea, and
the sea shall be calm to you:  for I know for my sake this great tempest
is upon you.

1:13. And the men rowed hard to return the land, but they were not
able:  because the sea tossed and swelled upon them.

1:14. And they cried to the Lord, and said:  We beseech thee, O Lord let
us not perish for this man's life, and lay not upon us innocent blood:
for thou, oh Lord, hast done as it pleased thee.

1:15. And they took Jonas, and cast him into the sea, and the sea
ceased from raging.

1:16. And the men feared the Lord exceedingly, and sacrificed victims
to the Lord, and made vows.



Jonas Chapter 2


Jonas is swallowed up by a great fish:  he prayeth with confidence in
God; and the fish casteth him out on the dry land.

2:1. Now the Lord prepared a great fish to swallow up Jonas:  and Jonas
was in the belly of a fish for three days and three nights.

2:2. And Jonas prayed to the Lord, his God, out of the belly of the
fish.

2:3. And he said:  I cried out of my affliction to the Lord, and he
heard me:  I cried out of the belly of hell, and thou hast heard my
voice.

2:4. And thou hast cast me forth into the deep, in the heart of the
sea, and a flood hast compassed me:  all thy billows, and thy waves have
passed over me.

2:5. And I said:  I am cast away out of the sight of thy eyes:  but yet I
shall see the holy temple again.

2:6. The waters compassed me about even to the soul:  the deep hath
closed me round about, the sea hath covered my head.

2:7. I went down to the lowest parts of the mountains:  the bars of the
earth have shut me up for ever:  and thou wilt bring up my life from
corruption, O Lord, my God.

2:8. When my soul was in distress within me, I remembered the Lord:
that my prayer may come to thee, unto the holy temple.

2:9. They that in vain observe vanities, forsake their own mercy.

2:10. But I with the voice of praise will sacrifice to thee:  I will pay
whatsoever I have vowed for my salvation to the Lord.

2:11. And the Lord spoke to the fish:  and it vomited out Jonas upon the
dry land.

Spoke to the fish. . .God's speaking to the fish, was nothing else but
his will, which all things obey.



Jonas Chapter 3


Jonas is sent again to preach in Ninive.  Upon their fasting and
repentance, God recalleth the sentence by which they were to be
destroyed.

3:1. And the word of the Lord came to Jonas the second time saying:

3:2. Arise, and go to Ninive, the great city:  and preach in it the
preaching that I bid thee.

3:3. And Jonas arose, and went to Ninive, according to the word of the
Lord:  now Ninive was a great city of three days' journey.

Of three days' journey. . .By the computation of some ancient
historians, Ninive was about fifty miles round:  so that to go through
all the chief streets and public places was three days' journey.

3:4. And Jonas began to enter into the city one day's journey:  and he
cried and said:  Yet forty days and Ninive shall be destroyed.

3:5. And the men of Ninive believed in God:  and they proclaimed a fast,
and put on sackcloth from the greatest to the least.

3:6. And the word came to the king of Ninive:  and he rose up out of his
throne, and cast away his robe from him, and was clothed in sackcloth,
and sat in ashes.

3:7. And he caused it to be proclaimed and published in Ninive, from
the mouth of the king and of his princes, saying:  Let neither men nor
beasts, oxen, nor sheep taste anything:  let them not feed, nor drink
water.

3:8. And let men and beasts be covered with sackcloth, and cry to the
Lord with all their strength, and let them turn every one from his evil
way, and from the iniquity that is in their hands.

3:9. Who can tell if God will turn, and forgive:  and will turn away
from his fierce anger, and we shall not perish?

3:10. And God saw their works, that they were turned from their evil
way:  and God had mercy with regard to the evil which he had said that
he would do to them, and he did it not.



Jonas Chapter 4


4:1. And Jonas was exceedingly troubled, and was angry:

Was exceedingly troubled, etc. . .His concern was lest he should pass
for a false prophet; or rather, lest God's word, by this occasion,
might come to be slighted and disbelieved.

4:2. And he prayed to the Lord, and said:  I beseech thee, O Lord, is
not this what I said, when I was yet in my own country?  therefore I
went before to flee into Tharsis:  for I know that thou art a gracious
and merciful God, patient, and of much compassion, and easy to forgive
evil.

4:3. And now, O Lord, I beseech thee take my life from me:  for it is
better for me to die than to live.

4:4. And the Lord said:  Dost thou think thou hast reason to be angry?

4:5. Then Jonas went out of the city, and sat toward the east side of
the city:  and he made himself a booth there, and he sat under it in the
shadow, till he might see what would befall the city.

4:6. And the Lord God prepared an ivy, and it came up over the head of
Jonas, to be a shadow over his head, and to cover him (for he was
fatigued):  and Jonas was exceeding glad of the ivy.

The Lord God prepared an ivy. . .Hederam.  In the Hebrew it is Kikajon,
which some render a gourd:  others a palmerist, or palma Christi.

4:7. But God prepared a worm, when the morning arose on the following
day:  and it struck the ivy and it withered.

4:8. And when the sun was risen, the Lord commanded a hot and burning
wind:  and the sun beat upon the head of Jonas, and he broiled with the
heat:  and he desired for his soul that he might die, and said:  It is
better for me to die than to live.

4:9. And the Lord said to Jonas:  Dost thou think thou hast reason to be
angry, for the ivy?  And he said:  I am angry with reason even unto
death.

4:10. And the Lord said:  Thou art grieved for the ivy, for which thou
hast not laboured, nor made it to grow, which in one night came up, and
in one night perished.

4:11. And shall I not spare Ninive, that great city, in which there are
more than a hundred and twenty thousand persons, that know how to
distinguish between their right hand and their left, and many beasts?




THE PROPHECY OF MICHEAS



MICHEAS, of Morasti, a little town in the tribe of JUDA, was
contemporary with the prophet ISAIAS:  whom he resembles both in his
spirit and his style.  He is different from the prophet MICHEAS
mentioned in the third book of Kings, chap. 22.  For that MICHEAS lived
in the days of king ACHAB, one hundred and fifty years before the time
of EZECHIAS, under whom this MICHEAS prophesied.



Micheas Chapter 1


Samaria for her sins shall be destroyed by the Assyrians; they shall
also invade Juda and Jerusalem.

1:1. The word of the Lord, that came to Micheas, the Morasthite, in the
days of Joathan, Achaz, and Ezechias, kings of Juda:  which he saw
concerning Samaria and Jerusalem.

1:2. Hear, all ye people:  and let the earth give ear, and all that is
therein:  and let the Lord God be a witness to you, the Lord from his
holy temple.

1:3. For behold the Lord will come forth out of his place:  and he will
come down, and will tread upon the high places of the earth.

1:4. And the mountains shall be melted under him:  and the valleys shall
be cleft, as wax before the fire, and as waters that run down a steep
place.

1:5. For the wickedness of Jacob is all this, and for the sins of the
house of Israel.  What is the wickedness of Jacob?  is it not Samaria?
and what are the high places of Juda?  are they not Jerusalem?

1:6. And I will make Samaria as a heap of stones in the field when a
vineyard is planted:  and I will bring down the stones thereof into the
valley, and will lay her foundations bare.

1:7. And all her graven things shall be cut in pieces, and all her
wages shall be burnt with fire, and I will bring to destruction all her
idols:  for they were gathered together of the hire of a harlot, and
unto the hire of a harlot they shall return.

Her wages. . .That is, her donaries or presents offered to her idols:  or
the hire of all her traffic and labour.--Ibid.  Of the hire of a harlot,
etc. . .They were gathered together by one idolatrous city, viz.,
Samaria:  and they shall be carried away to another idolatrous city,
viz., Ninive.

1:8. Therefore will I lament, and howl:  I will go stript and naked:  I
will make a wailing like the dragons, and a mourning like the
ostriches.

1:9. Because her wound is desperate, because it is come even to Juda,
it hath touched the gate of my people, even to Jerusalem.

It hath touched the gate, etc. . .That is, the destruction of Samaria
shall be followed by the invasion of my people of Juda, and the
Assyrians shall come and lay all waste even to the confines of
Jerusalem.

1:10. Declare ye it not in Geth, weep ye not with tears:  in the house
of Dust sprinkle yourselves with dust.

Declare ye it not in Geth. . .Viz., amongst the Philistines, lest they
rejoice at your calamity.--Ibid.  Weep ye not, etc. . .Keep in your
tears, that you may not give your enemies an occasion of insulting over
you; but in your own houses, or in your house of dust, your earthly
habitation, sprinkle yourselves with dust, and put on the habit of
penitents.  Some take the house of dust (in Hebrew, Aphrah) to be the
proper name of a city.

1:11. And pass away, O thou that dwellest in the beautiful place,
covered with thy shame:  she went not forth that dwelleth in the
confines:  the house adjoining shall receive mourning from you, which
stood by herself.

Thou that dwellest in the Beautiful place, viz., in Samaria.  In the
Hebrew the Beautiful place is expressed by the word Sapir, which some
take for the proper name of a city.--Ibid.  She went not forth,
etc. . .that is, they that dwelt in the confines came not forth, but kept
themselves within, for fear.--Ibid.  The house adjoining, etc. . .Viz.,
Judea and Jerusalem, neighbours to Samaria, and partners in her sins,
shall share also in her mourning and calamity; though they have
pretended to stand by themselves, trusting in their strength.

1:12. For she is become weak unto good that dwelleth in bitterness:  for
evil is come down from the Lord into the gate of Jerusalem.

She is become weak, etc. . .Jerusalem is become weak unto any good;
because she dwells in the bitterness of sin.

1:13. A tumult of chariots hath astonished the inhabitants of Lachis:
it is the beginning of sin to the daughter of Sion for in thee were
found the crimes of Israel.

It is the beginning, etc. . .That is, Lachis was the first city of Juda
that learned from Samaria the worship of idols, and communicated it to
Jerusalem.

1:14. Therefore shall she send messengers to the inheritance of Geth:
the houses of lying to deceive the kings of Israel.

Therefore shall she send, etc. . .Lachis shall send to Geth for help:
but in vain:  for Geth, instead of helping, shall be found to be a house
of lying and deceit to Israel.

1:15. Yet will I bring an heir to thee that dwellest in Maresa:  even to
Odollam shall the glory of Israel come.

An heir, etc. . .Maresa (which was the name of a city of Juda) signifies
inheritance:  but here God by his prophet tells the Jews, that he will
bring them an heir to take possession of their inheritance:  and that
the glory of Israel shall be obliged to give place, and to retire even
to Odollam, a city in the extremity of their dominions.  And therefore
he exhorts them to penance in the following verse.

1:16. Make thee bald, and be polled for thy delicate children:  enlarge
thy baldness as the eagle:  for they are carried into captivity from
thee.



Micheas Chapter 2


The Israelites by their crying injustices provoke God to punish them.
He shall at last restore Jacob.

2:1. Woe to you that devise that which is unprofitable, and work evil
in your beds:  in the morning light they execute it, because their hand
is against God.

2:2. And they have coveted fields, and taken them by violence, and
houses they have forcibly taken away:  and oppressed a man and his
house, a man and his inheritance.

2:3. Therefore thus saith the Lord:  Behold I devise an evil against
this family:  from which you shall not withdraw your necks, and you
shall not walk haughtily, for this is a very evil time.

2:4. In that day a parable shall be taken up upon you, and a song shall
be sung with melody by them that say:  We are laid waste and spoiled:
the portion of my people is changed:  how shall he depart from me,
whereas he is returning that will divide our land?

How shall he depart, etc. . .How do you pretend to say that the Assyrian
is departing; when indeed he is coming to divide our lands amongst his
subjects?

2:5. Therefore thou shalt have none that shall cast the cord of a lot
in the assembly of the Lord.

Thou shalt have none, etc. . .Thou shalt have no longer any lot or
inheritance in the land of the people of the Lord.

2:6. Speak ye not, saying:  It shall not drop upon these, confusion
shall not take them.

It shall not drop, etc. . .That is, the prophecy shall not come upon
these.  Such were the sentiments of the people that were unwilling to
believe the threats of the prophets.

2:7. The house of Jacob saith:  Is the Spirit of the Lord straitened or
are these his thoughts?  Are not my words good to him that walketh
uprightly?

2:8. But my people, on the contrary, are risen up as an enemy:  you have
taken away the cloak off from the coat:  and them that passed harmless
you have turned to war.

You have taken away, etc. . .You have even stripped people of their
necessary garments:  and have treated such as were innocently passing on
the way, as if they were at war with you.

2:9. You have cast out the women of my people from their houses, in
which they took delight:  you have taken my praise forever from their
children.

You have cast out, etc. . .either by depriving them of their houses:  or,
by your crimes, given occasion to their being carried away captives,
and their children, by that means, never learning to praise the Lord.

2:10. Arise ye, and depart, for there is no rest here for you.  For that
uncleanness of the land, it shall be corrupted with a grievous
corruption.

2:11. Would God I were not a man that hath the spirit, and that I
rather spoke a lie:  I will let drop to thee of wine, and of
drunkenness:  and it shall be this people upon whom it shall drop.

Would God, etc. . .The prophet could have wished, out of his love to his
people, that he might be deceived in denouncing to them these evils
that were to fall upon them:  but by conforming himself to the will of
God, he declares to them, that he is sent to prophesy, literally to let
drop upon them, the wine of God's indignation, with which they should
be made drunk; that is, stupified and cast down.

2:12. I will assemble and gather together all of thee, O Jacob:  I will
bring together the remnant of Israel, I will put them together as a
flock in the fold, as sheep in the midst of the sheepcotes, they shall
make a tumult by reason of the multitude of men.

2:13. For he shall go up that shall open the way before them:  they
shall divide and pass through the gate, and shall come in by it:  and
their king shall pass before them, and the Lord at the head of them.



Micheas Chapter 3


For the sins of the rich oppressing the poor, of false prophets
flattering for lucre, and of judges perverting justice, Jerusalem and
the temple shall be destroyed.

3:1. And I said:  Hear, O ye princes of Jacob, and ye chiefs of the
house of Israel:  Is it not your part to know judgment,

3:2. You that hate good, and love evil:  that violently pluck off their
skins from them and their flesh from their bones?

3:3. Who have eaten the flesh of my people, and have flayed their skin
off them:  and have broken, and chopped their bones as for the kettle,
and as flesh in the midst of the pot.

3:4. Then shall they cry to the Lord, and he will not hear them:  and he
will hide his face from them at that time, as they have behaved
wickedly in their devices.

3:5. Thus saith the Lord concerning the prophets that make my people
err:  that bite with their teeth, and preach peace:  and if a man give
not something into their mouth, they prepare war against him.

3:6. Therefore night shall be to you instead of vision, and darkness to
you instead of divination:  and the sun shall go down upon the prophets,
and the day shall be darkened over them.

3:7. And they shall be confounded that see visions, and the diviners
shall be confounded:  and they shall all cover their faces, because
there is no answer of God.

3:8. But yet I am filled with the strength of the spirit of the Lord,
with judgment and power:  to declare unto Jacob his wickedness and to
Israel his sin.

3:9. Hear this, ye princes of the house of Jacob, and ye judges of the
house of Israel:  you that abhor judgment and pervert all that is right.

3:10. You that build up Sion with blood, and Jerusalem with iniquity.

3:11. Her princes have judged for bribes:  and her priests have taught
for hire, and her prophets divined for money:  and they leaned upon the
Lord, saying:  Is not the Lord in the midst of us?  no evil shall come
among us.

3:12. Therefore because of you, Sion shall be ploughed as a field, and
Jerusalem shall be as a heap of stones, and the mountain of the temple
as the high places of the forests.



Micheas Chapter 4


The glory of the church of Christ, by the conversion of the Gentiles.
The Jews shall be carried captives to Babylon, and be delivered again.

4:1. And it shall come to pass in the last days, that the mountain of
the house of the Lord shall be prepared in the top of the mountains,
and high above the hills:  and people shall flow to it.

4:2. And many nations shall come in haste, and say:  Come, let us go up
to the mountain of the Lord, and to the house of the God of Jacob:  and
he will teach us of his ways, and we will walk in his paths:  for the
law shall go forth out of Sion, and the word of the Lord out of
Jerusalem.

4:3. And he shall judge among many people, and rebuke strong nations
afar off:  and they shall beat their swords into ploughshares, and their
spears into spades:  nation shall not take sword against nation:  neither
shall they learn war anymore.

Neither shall they learn, etc. . .The law of Christ is a law of peace;
and all his true subjects, as much as lies in them love and keep peace
with all the world.

4:4. And every man shall sit under his vine, and under his fig tree,
and there shall be none to make them afraid, for the mouth of the Lord
of hosts hath spoken.

4:5. For all people will walk every one in the name of his god:  but we
will walk in the name of the Lord, our God, for ever and ever.

4:6. In that day, saith the Lord, I will gather up her that halteth:
and her that I had cast out, I will gather up:  and her whom I had
afflicted.

4:7. And I will make her that halted, a remnant:  and her that had been
afflicted, a mighty nation:  and the Lord will reign over them in Mount
Sion, from this time now and forever.

4:8. And thou, O cloudy tower of the flock, of the daughter of Sion,
unto thee shall it come:  yea the first power shall come, the kingdom to
the daughter of Jerusalem.

4:9. Now, why art thou drawn together with grief?  Hast thou no king in
thee, or is thy counselor perished, because sorrow hath taken thee as a
woman in labour.

4:10. Be in pain and labour, O daughter of Sion, as a woman that
bringeth forth:  for now shalt thou go out of the city, and shalt dwell
in the country, and shalt come even to Babylon, there thou shalt be
delivered:  there the Lord will redeem thee out of the hand of thy
enemies.

4:11. And now many nations are gathered together against thee, and they
say:  Let her be stoned:  and let our eye look upon Sion.

4:12. But they have not known the thoughts of the Lord, and have not
understood his counsel:  because he hath gathered them together as the
hay of the floor.

4:13. Arise, and tread, O daughter of Sion:  for I will make thy horn
iron, and thy hoofs I will make brass:  and thou shalt beat in pieces
many peoples, and shalt immolate the spoils of them to the Lord, and
their strength to the Lord of the whole earth.



Micheas Chapter 5


The birth of Christ in Bethlehem:  his reign and spiritual conquests.

5:1. Now shalt thou be laid waste, O daughter of the robber:  they have
laid siege against us, with a rod shall they strike the cheek of the
judge of Israel.

Daughter of the robber. . .Some understand this of Babylon; which robbed
and pillaged the temple of God:  others understand it of Jerusalem; by
reason of the many rapines and oppressions committed there.

5:2. And thou Bethlehem Ephrata, art a little one among the thousands
of Juda, out of thee shall he come forth unto me that is to be the
ruler in Israel:  and his going forth is from the beginning, from the
days of eternity.

His going forth, etc. . .That is, he who as man shall be born in thee,
as God was born of his Father from all eternity.

5:3. Therefore will he give them up even till the time wherein she that
travaileth shall bring forth:  and the remnant of his brethren shall be
converted to the children of Israel.

5:4. And he shall stand, and feed in the strength of the Lord, in the
height of the name of the Lord, his God:  and they shall be converted,
for now shall he be magnified even to the ends of the earth.

5:5. And this man shall be our peace, when the Assyrian shall come into
our land, and when he shall set his foot in our houses:  and we shall
raise against him seven shepherds, and eight principal men.

The Assyrian. . .That is, the persecutors of the church:  who are here
called Assyrians by the prophet:  because the Assyrians were at that
time the chief enemies and persecutors of the people of God.--Ibid.
Seven shepherds, etc. . .Viz., the pastors of God's church, and the
defenders of the faith.  The number seven in scripture is taken to
signify many:  and when eight is joined with it, we are to understand
that the number will be very great.

5:6. And they shall feed the land of Assyria with the sword, and the
land of Nemrod with the spears thereof:  and he shall deliver us from
the Assyrian when he shall come into our land, and when he shall tread
in our borders.

They shall feed, etc. . .They shall make spiritual conquests in the
lands of their persecutors, with the word of the spirit, which is the
word of God.  Eph. 6.17.

5:7. And the remnant of Jacob shall be in the midst of many peoples, as
a dew from the Lord, and as drops upon the grass, which waiteth not for
man, nor tarrieth for the children of men.

The remnant of Jacob. . .Viz., the apostles, and the first preachers of
the Jewish nation; whose doctrine, like dew, shall make the plants of
the converted Gentiles grow up, without waiting for any man to
cultivate them by human learning.

5:8. And the remnant of Jacob shall be among the Gentiles, in the midst
of many peoples, as a lion among the beasts of the forests, and as a
young lion among the flocks of sheep:  who, when he shall go through,
and tread down, and take there is none to deliver.

As a lion, etc. . .This denotes the fortitude of these first preachers;
and their success in their spiritual enterprises.

5:9. Thy hand shall be lifted up over thy enemies, and all thy enemies
shall be cut off.

5:10. And it shall come to pass in that day, saith the Lord, that I
will take away thy horses out of the midst of thee, and will destroy
thy chariots.

I will take away thy horses, etc. . .Some understand this, and all that
follows to the end of the chapter, as addressed to the enemies of the
church.  But it may as well be understood of the converts to the church:
who should no longer put their trust in any of these things.

5:11. And I will destroy the cities of thy land, and will throw down
all thy strong holds, and I will take away sorceries out of thy hand,
and there shall be no divinations in thee.

5:12. And I will destroy thy graven things, and thy statues, out of the
midst of thee:  and thou shalt no more adore the works of thy hands.

5:13. And I will pluck up thy groves out of the midst of thee:  and will
crush thy cities.

5:14. And I will execute vengeance in wrath, and in indignation, among
all the nations that have not given ear.



Micheas Chapter 6


God expostulates with the Jews for their ingratitude and sins:  for
which they shall be punished.

6:1. Hear ye what the Lord saith:  Arise, contend thou in judgment
against the mountains, and let the hills hear thy voice.

The mountains, etc. . .That is, the great ones, the princes of the
people.

6:2. Let the mountains hear the judgment of the Lord, and the strong
foundations of the earth:  for the Lord will enter into judgment with
his people, and he will plead against Israel.

6:3. O my people, what have I done to thee, or in what have I molested
thee?  answer thou me.

6:4. For I brought thee up out of the land of Egypt, and delivered thee
out of the house of slaves:  and I sent before thy face Moses, and
Aaron, and Mary.

6:5. O my people, remember, I pray thee, what Balach, the king of Moab,
purposed:  and what Balaam, the son of Beor, answered him, from Setim to
Galgal, that thou mightest know the justice of the Lord.

From Setim to Galgal. . .He puts them in mind of the favour he did them,
in not suffering them to be quite destroyed by the evil purpose of
Balach, and the wicked counsel of Balaam:  and then gives them a hint of
the wonders he wrought, in order to bring them into the land of
Promise, by stopping the course of the Jordan, in their march from
Setim to Galgal.

6:6. What shall I offer to the Lord that is worthy?  wherewith shall I
kneel before the high God?  shall I offer holocausts unto him, and
calves of a year old?

What shall I offer, etc. . .This is spoken in the person of the people,
desiring to be informed what they are to do to please God.

6:7. May the Lord be appeased with thousands of rams, or with many
thousands of fat he goats?  shall I give my firstborn for my wickedness,
the fruit of my body for the sin of my soul?

6:8. I will shew thee, O man, what is good, and what the Lord requireth
of thee:  Verily to do judgment, and to love mercy, and to walk
solicitous with thy God.

6:9. The voice of the Lord crieth to the city, and salvation shall be
to them that fear thy name:  hear O ye tribes, and who shall approve it?

6:10. As yet there is a fire in the house of the wicked, the treasures
of iniquity, and a scant measure full of wrath.

Full of wrath, etc. . .That is, highly provoking in the sight of God.

6:11. Shall I justify wicked balances, and the deceitful weights of the
bag?

6:12. By which her rich men were filled with iniquity, and the
inhabitants thereof have spoken lies, and their tongue was deceitful in
their mouth.

6:13. And I therefore began to strike thee with desolation for thy
sins.

6:14. Thou shalt eat, but shalt not be filled:  and thy humiliation
shall be in the midst of thee:  and thou shalt take hold, but shalt not
save:  and those whom thou shalt save, I will give up to the sword.

6:15. Thou shalt sow, but shalt not reap:  thou shalt tread the olives,
but shalt not be anointed with oil:  and the new wine, but shalt not
drink the wine.

6:16. For thou hast kept the statutes of Amri, and all the works of the
house of Achab:  and thou hast walked according their wills, that I
should make thee a desolation, and the inhabitants thereof a hissing,
and you shall bear the reproach of my people.

The statutes of Amri, etc. . .The wicked ways of Amri and Achab,
idolatrous kings.



Micheas Chapter 7


The prophet laments, that notwithstanding all his preaching, the
generality are still corrupt in their manners:  therefore their
desolation is at hand:  but they shall be restored again and prosper;
and all mankind shall be redeemed by Christ.

7:1. Woe is me, for I am become as one that gleaneth in autumn the
grapes of the vintage:  there is no cluster to eat, my soul desired the
first ripe figs.

7:2. The holy man is perished out of the earth, and there is none
upright among men:  they all lie in wait for blood, every one hunteth
his brother to death.

7:3. The evil of their hands they call good:  the prince requireth, and
the judge is for giving:  and the great man hath uttered the desire of
his soul, and they have troubled it.

7:4. He that is best among them, is as a brier, and he that is
righteous, as the thorn of the hedge.  The day of thy inspection, thy
visitation cometh:  now shall be their destruction.

7:5. Believe not a friend, and trust not in a prince:  keep the doors of
thy mouth from her that sleepeth in thy bosom.

7:6. For the son dishonoureth the father, and the daughter riseth up
against her mother, the daughter in law against her mother in law:  and
a man's enemies are they of his own household.

7:7. But I will look towards the Lord, I will wait for God, my saviour:
my God will hear me.

7:8. Rejoice not, thou my enemy, over me, because I am fallen:  I shall
arise, when I sit in darkness, the Lord is my light.

7:9. I will bear the wrath of the Lord, because I have sinned against
him:  until he judge my cause, and execute judgement for me:  he will
bring me forth into the light, I shall behold his justice.

7:10. And my enemy shall behold, and she shall be covered with shame,
who saith to me:  Where is the Lord thy God?  my eyes shall look down
upon her:  now shall she be trodden under foot as the mire of the
streets.

She shall be covered, etc. . .Viz., Babylon my enemy.

7:11. The day shall come, that thy walls may be built up:  in that day
shall the law be far removed.

The law. . .Viz., of thy enemies, who have tyrannized over thee.

7:12. In that day they shall come even from Assyria to thee, and to the
fortified cities:  and from the fortified cities even to the river, and
from sea to sea, and from mountain to mountain.

7:13. And the land shall be made desolate because of the inhabitants
thereof, and for the fruit of their devices.

The land, etc. . .Viz., of Babylon.

7:14. Feed thy people with thy rod, the flock of thy inheritance, them
that dwell alone in the forest, in the midst of Carmel:  they shall feed
in Basan and Galaad, according to the days of old.

7:15. According to the days of thy coming out of the land of Egypt, I
will shew him wonders.

7:16. The nations shall see, and shall be confounded at all their
strength:  they shall put the hand upon the mouth, their ears shall be
deaf.

7:17. They shall lick the dust like serpents, as the creeping things of
the earth, they shall be disturbed in their houses:  they shall dread
the Lord, our God, and shall fear thee.

7:18. Who is a God like to thee, who takest away iniquity, and passest
by the sin of the remnant of thy inheritance?  he will send his fury in
no more, because he delighteth in mercy.

7:19. He will turn again, and have mercy on us:  he will put away our
iniquities:  and he will cast all our sins into the bottom of the sea.

7:20. Thou wilt perform the truth to Jacob, the mercy to Abraham:  which
thou hast sworn to our fathers from the days of old.




THE PROPHECY OF NAHUM



NAHUM, whose name signifies A COMFORTER, was a native of Elcese, or
Elcesai, supposed to be a little town in Galilee.  He prophesied, after
the ten tribes were carried into captivity, and foretold the utter
destruction of Ninive, by the Babylonians and Medes:  which happened in
the reign of JOSIAS.



Nahum Chapter 1


The majesty of God, his goodness to his people, and severity to his
enemies.

1:1. The burden of Ninive.  The book of the vision of Nahum, the
Elcesite.

1:2. The Lord is a jealous God, and a revenger:  the Lord is a revenger,
and hath wrath:  the Lord taketh vengeance on his adversaries, and he is
angry with his enemies.

1:3. The Lord is patient, and great in power, and will not cleanse and
acquit the guilty.  The Lord's ways are in a tempest, and a whirlwind,
and clouds are the dust of his feet.

1:4. He rebuketh the sea and drieth it up:  and bringeth all the rivers
to be a desert.  Basan languisheth and Carmel:  and the flower of Libanus
fadeth away.

1:5. The mountains tremble at him, and the hills are made desolate:  and
the earth hath quaked at his presence, and the world, and all that
dwell therein.

1:6. Who can stand before the face of his indignation?  and who shall
resist in the fierceness of his anger?  his indignation is poured out
like fire:  and the rocks are melted by him.

1:7. The Lord is good, and giveth strength in the day of trouble:  and
knoweth them that hope in him.

1:8. But with a flood that passeth by, he will make an utter end of the
place thereof:  and darkness shall pursue his enemies.

Of the place thereof. . .Viz., of Ninive.

1:9. What do ye devise against the Lord?  he will make an utter end:
there shall not rise a double affliction.

1:10. For as thorns embrace one another:  so while they are feasting and
drinking together, they shall be consumed as stubble that is fully dry.

1:11. Out of thee shall come forth one that imagineth evil against the
Lord, contriving treachery in his mind.

Shall come forth one, etc. . .Some understand this of Sennacherib.  But
as his attempt against the people seems to have been prior to the
prophecy of Nahum, we may better understand it of Holofernes.

1:12. Thus saith the Lord:  Though they were perfect:  and many of them
so, yet thus shall they be cut off, and he shall pass:  I have afflicted
thee, and I will afflict thee no more.

Though they were perfect, etc. . .That is, however strong or numerous
their forces may be, they shall be cut off; and their prince or leader
shall pass away and disappear.

1:13. And now I will break in pieces his rod with which he struck thy
back, and I will burst thy bonds asunder.

1:14. And the Lord will give a commandment concerning thee, that no
more of thy name shall be sown:  I will destroy the graven and molten
thing out of the house of thy God, I will make it thy grave, for thou
art disgraced.

Will give a commandment. . .That is, a decree, concerning thee, O king
of Ninive, thy seed shall fail, etc.

1:15. Behold upon the mountains the feet of him that bringeth good
tidings, and that preacheth peace:  O Juda, keep thy festivals, and pay
thy vows:  for Belial shall no more pass through thee again, he is
utterly cut off.

Belial. . .The wicked one, viz., the Assyrian.



Nahum Chapter 2


God sends his armies against Ninive to destroy it.

2:1. He is come up that shall destroy before thy face, that shall keep
the siege:  watch the way, fortify thy loins, strengthen thy power
exceedingly.

2:2. For the Lord hath rendered the pride of Jacob, as the pride of
Israel:  because the spoilers have laid them waste, and have marred
their vine branches.

Hath rendered the pride of Jacob, etc. . .He hath punished Jacob for his
pride; and therefore Ninive must not expect to escape.  Or else,
rendering the pride of Jacob means rewarding, that is, punishing Ninive
for the pride they exercised against Jacob.

2:3. The shield of his mighty men is like fire, the men of the army are
clad in scarlet, the reins of the chariot are flaming in the day of his
preparation, and the drivers are stupefied.

Of his mighty men, etc. . .He speaks of the Chaldeans and Medes sent to
destroy Ninive.--Ibid.  Stupefied. . .consopiti.  That is, they drive on
furiously like men intoxicated with wine.

2:4. They are in confusion in the ways, the chariots jostle one against
another in the streets:  their looks are like torches, like lightning
running to and fro.

2:5. He will muster up his valiant men, they shall stumble in their
march:  they shall quickly get upon the walls thereof:  and a covering
shall be prepared.

Stumble in their march. . .By running hastily on.

2:6. The gates of the rivers are opened, and the temple is thrown down
to the ground.

2:7. And the soldier is led away captive:  and her bondwomen were led
away mourning as doves, murmuring in their hearts.

2:8. And as for Ninive, her waters are like a great pool:  but the men
flee away.  They cry:  Stand, stand, but there is none that will return
back.

2:9. Take ye the spoil of the silver, take the spoil of the gold:  for
there is no end of the riches of all the precious furniture.

2:10. She is destroyed, and rent, and torn:  the heart melteth, and the
knees fail, and all the loins lose their strength:  and the faces of
them all are as the blackness of a kettle.

2:11. Where is now the dwelling of the lions, and the feeding place of
the young lions, to which the lion went, to enter in thither, the young
lion, and there was none to make them afraid?

2:12. The lion caught enough for his whelps, and killed for his
lionesses:  and he filled his holes with prey, and his den with rapine.

2:13. Behold I come against thee, saith the Lord of hosts, and I will
burn thy chariots even to smoke, and the sword shall devour thy young
lions:  and I will cut off thy prey out of the land, and the voice of
thy messengers shall be heard no more.



Nahum Chapter 3


The miserable destruction of Ninive.

3:1. Woe to thee, O city of blood, all full of lies and violence:
rapine shall not depart from thee.

3:2. The noise of the whip, and the noise of the rattling of the
wheels, and of the neighing horse; and of the running chariot, and of
the horsemen coming up,

3:3. And of the shining sword, and of the glittering spear, and of a
multitude slain, and of a grievous destruction:  and there is no end of
carcasses, and they shall fall down on their dead bodies.

3:4. Because of the multitude of the fornications of the harlot that
was beautiful and agreeable, and that made use of witchcraft, that sold
nations through her fornications, and families through her witchcrafts.

3:5. Behold I come against thee, saith the Lord of hosts:  and I will
discover thy shame to thy face, and will shew thy nakedness to the
nations, and thy shame to kingdoms.

3:6. And I will cast abominations upon thee, and will disgrace thee,
and will make an example of thee.

3:7. And it shall come to pass that every one that shall see thee,
shall flee from thee, and shall say:  Ninive is laid waste:  who shall
bemoan thee?  whence shall I seek a comforter for thee?

3:8. Art thou better than the populous Alexandria, that dwelleth among
the rivers?  waters are round about it:  the sea is its riches:  the
waters are its walls.

Populous Alexandria. . .No-Ammon.  A populous city of Egypt destroyed by
the Chaldeans, and afterwards rebuilt by Alexander, and called
Alexandria.  Others suppose No-Ammon to be the same as Diospolis.

3:9. Ethiopia and Egypt were the strength thereof, and there is no end:
Africa and the Libyans were thy helpers.

3:10. Yet she also was removed and carried into captivity:  her young
children were dashed in pieces at the top of every street, and they
cast lots upon her nobles, and all her great men were bound in fetters.

3:11. Therefore thou also shalt be made drunk, and shalt be despised:
and thou shalt seek help from the enemies.

3:12. All thy strong holds shall be like fig trees with their green
figs:  if they be shaken, they shall fall into the mouth of the eater.

3:13. Behold thy people in the midst of thee are women:  the gates of
thy land shall be set wide open to thy enemies, the fire shall devour
thy bars.

3:14. Draw thee water for the siege, build up thy bulwarks:  go into the
clay, and tread, work it and make brick.

3:15. There shall the fire devour thee:  thou shalt perish by the sword,
it shall devour thee like the bruchus:  assemble together like the
bruchus, make thyself many like the locust.

3:16. Thou hast multiplied thy merchandises above the stars of heaven:
the bruchus hath spread himself and flown away.

3:17. Thy guards are like the locusts:  and thy little ones like the
locusts of locusts which swarm on the hedges in the day of cold:  the
sun arose, and they flew away, and their place was not known where they
were.

Locusts of locusts. . .The young locusts.

3:18. Thy shepherds have slumbered, O king of Assyria, thy princes
shall be buried:  thy people are hid in the mountains, and there is none
to gather them.

3:19. Thy destruction is not hidden, thy wound is grievous:  all that
have heard the fame of thee, have clapped their hands over thee:  for
upon whom hath not thy wickedness passed continually?




THE PROPHECY OF HABACUC



HABACUC was a native of Bezocher, and prophesied in JUDA, some time
before the invasion of the CHALDEANS, which he foretold.  He lived to
see this prophecy fulfilled, and for many years after, according to the
general opinion, which supposes him to be the same that was brought by
the ANGEL to DANIEL in BABYLON, Dan. 14.



Habacuc Chapter 1


The prophet complains of the wickedness of the people:  God reveals to
him the vengeance he is going to take of them by the Chaldeans.

1:1. The burden that Habacuc the prophet saw.

Burden. . .Such prophecies more especially are called burdens, as
threaten grievous evils and punishments.

1:2. How long, O Lord, shall I cry, and thou wilt not hear?  shall I cry
out to thee suffering violence, and thou wilt not save?

1:3. Why hast thou shewn me iniquity and grievance, to see rapine and
injustice before me?  and there is a judgment, but opposition is more
powerful.

1:4. Therefore the law is torn in pieces, and judgment cometh not to
the end:  because the wicked prevaileth against the just, therefore
wrong judgment goeth forth.

1:5. Behold ye among the nations, and see:  wonder, and be astonished:
for a work is done in your days, which no man will believe when it
shall be told.

1:6. For behold, I will raise up the Chaldeans, a bitter and swift
nation, marching upon the breadth of the earth, to possess the dwelling
places that are not their own.

1:7. They are dreadful, and terrible:  from themselves shall their
judgment, and their burden proceed.

1:8. Their horses are lighter than leopards, and swifter than evening
wolves; and their horsemen shall be spread abroad:  for their horsemen
shall come from afar, they shall fly as an eagle that maketh haste to
eat.

1:9. They shall all come to the prey, their face is like a burning
wind:  and they shall gather together captives as the sand.

1:10. And their prince shall triumph over kings, and princes shall be
his laughingstock:  and he shall laugh at every strong hold, and shall
cast up a mount, and shall take it.

1:11. Then shall his spirit be changed, and he shall pass, and fall:
this is his strength of his god.

Then shall his spirit, etc. . .Viz., the spirit of the king of Babylon.
It alludes to the judgment of God upon Nabuchodonosor, recorded Dan.
4., and to the speedy fall of the Chaldean empire.

1:12. Wast thou not from the beginning, O Lord my God, my holy one, and
we shall not die?  Lord, thou hast appointed him for judgment:  and made
him strong for correction.

1:13. Thy eyes are too pure to behold evil, and thou canst not look on
iniquity.  Why lookest thou upon them that do unjust things, and holdest
thy peace when the wicked devoureth the man that is more just than
himself?

1:14. And thou wilt make men as the fishes of the sea, and as the
creeping things that have no ruler.

1:15. He lifted up all them with his hook, he drew them in his drag,
and gathered them into his net:  for this he will be glad and rejoice.

1:16. Therefore will he offer victims to his drag, and he will
sacrifice to his net:  because through them his portion is made fat, and
his meat dainty.

1:17. For this cause therefore he spreadeth his net, and will not spare
continually to slay the nations.



Habacuc Chapter 2


The prophet is admonished to wait with faith.  The enemies of God's
people shall assuredly be punished.

2:1. I will stand upon my watch, and fix my foot upon the tower:  and I
will watch, to see what will be said to me, and what I may answer to
him that reproveth me.

Will stand, etc. . .Waiting to see what the Lord will answer to my
complaint, viz., that the Chaldeans, who are worse than the Jews, and
who attribute all their success to their own strength, or to their
idols, should nevertheless prevail over the people of the Lord.  The
Lord's answer is, that the prophet must wait with patience and faith:
that all should be set right in due time; and the enemies of God and
his people punished according to their deserts.

2:2. And the Lord answered me, and said:  Write the vision, and make it
plain upon tables:  that he that readeth it may run over it.

2:3. For as yet the vision is far off, and it shall appear at the end,
and shall not lie:  if it make any delay, wait for it:  for it shall
surely come, and it shall not be slack.

2:4. Behold, he that is unbelieving, his soul shall not be right in
himself:  but the just shall live in his faith.

2:5. And as wine deceiveth him that drinketh it:  so shall the proud man
be, and he shall not be honoured:  who hath enlarged his desire like
hell:  and is himself like death, and he is never satisfied:  but will
gather together unto him all nations, and heap together unto him all
people.

As wine deceiveth, etc. . .Viz., by affording only a short passing
pleasure; followed by the evils and disgrace that are the usual
consequences of drunkenness; so shall it be with the proud enemies of
the people of God; whose success affordeth them only a momentary
pleasure, followed by innumerable and everlasting evils.

2:6. Shall not all these take up a parable against him, and a dark
speech concerning him:  and it shall be said:  Woe to him that heapeth
together that which is not his own?  how long also doth he load himself
with thick clay?

Thick clay. . .Ill-gotten goods, that, like mire, both burden and defile
the soul.

2:7. Shall they not rise up suddenly that shall bite thee:  and they be
stirred up that shall tear thee, and thou shalt be a spoil to them?

2:8. Because thou hast spoiled many nations, all that shall be left of
the people shall spoil thee:  because of men's blood, and for the
iniquity of the land, of the city, and of all that dwell therein.

2:9. Woe to him that gathereth together an evil covetousness to his
house, that his nest may be on high, and thinketh he may be delivered
out of the hand of evil.

2:10. Thou hast devised confusion to thy house, thou hast cut off many
people, and thy soul hath sinned.

2:11. For the stone shall cry out of the wall:  and the timber that is
between the joints of the building, shall answer.

2:12. Woe to him that buildeth a town with blood, and prepareth a city
by iniquity.

2:13. Are not these things from the Lord of hosts?  for the people shall
labour in a great fire:  and the nations in vain, and they shall faint.

Are not these things, etc. . .That is, shall not these punishments that
are here recorded, come from the Lord upon him that is guilty of such
crimes.--Ibid.  The people shall labour, etc. . .Viz., the enemies of
God's people.

2:14. For the earth shall be filled, that men may know the glory of the
Lord, as waters covering the sea.

2:15. Woe to him that giveth drink to his friend, and presenteth his
gall, and maketh him drunk, that he may behold his nakedness.

2:16. Thou art filled with shame instead of glory:  drink thou also, and
fall fast asleep:  the cup of the right hand of the Lord shall compass
thee, and shameful vomiting shall be on thy glory.

2:17. For the iniquity of Libanus shall cover thee, and the ravaging of
beasts shall terrify them because of the blood of men, and the iniquity
of the land, and of the city, and of all that dwell therein.

The iniquity of Libanus. . .That is, the iniquity committed by the
Chaldeans against the temple of God, signified here by the name of
Libanus.

2:18. What doth the graven thing avail, because the maker thereof hath
graven it, a molten, and a false image?  because the forger thereof hath
trusted in a thing of his own forging, to make dumb idols.

2:19. Woe to him that saith to wood:  Awake:  to the dumb stone:  Arise:
can it teach?  Behold, it is laid over with gold, and silver, and there
is no spirit in the bowels thereof.

2:20. But the Lord is in his holy temple:  let all the earth keep
silence before him.



Habacuc Chapter 3


3:1. A PRAYER OF HABACUC THE PROPHET FOR IGNORANCES.

For ignorances. . .That is, for the sins of his people.  In the Hebrew,
it is Sigionoth:  which some take to signify a musical instrument, or
tune; with which this sublime prayer and canticle was to be sung.

3:2. O Lord, I have heard thy hearing, and was afraid.  O Lord, thy
work, in the midst of the years bring it to life:  In the midst of the
years thou shalt make it known:  when thou art angry, thou wilt remember
mercy.

Thy hearing, etc. . .That is, thy oracles, the great and wonderful
things thou hast revealed to me; and I was struck with a reverential
fear and awe.--Ibid.  Thy work. . .The great work of the redemption of
man, which thou wilt bring to life and light in the midst of the years,
when our calamities and miseries shall be at their height.

3:3. God will come from the south, and the holy one from mount Pharan:
His glory covered the heavens, and the earth is full of his praise.

God will come from the south, etc. . .God himself will come to give us
his law, and to conduct us into the true land of promise:  as heretofore
he came from the South (in the Hebrew Theman) and from mount Pharan to
give his law to his people in the desert.  See Deut. 33.2.

3:4. His brightness shall be as the light:  horns are in his hands:
There is his strength hid:

Horns, etc. . .That is, strength and power, which, by a Hebrew phrase,
are called horns.  Or beams of light, which come forth from his hands.
Or it may allude to the cross, in the horns of which the hands of
Christ were fastened, where his strength was hidden, by which he
overcame the world, and drove out death and the devil.

3:5. Death shall go before his face.  And the devil shall go forth
before his feet.

Death shall go before his face, etc. . .Both death and the devil shall
be the executioners of his justice against his enemies:  as they were
heretofore against the Egyptians and Chanaanites.

3:6. He stood and measured the earth.  He beheld, and melted the
nations:  and the ancient mountains were crushed to pieces.  The hills of
the world were bowed down by the journeys of his eternity.

He beheld, etc. . .One look of his eye is enough to melt all the
nations, and to reduce them to nothing.  For all heaven and earth
disappear when they come before his light.  Apoc. 20.11.  Ibid.  The
ancient mountains, etc. . .By the mountains and hills are signified the
great ones of the world, that persecute the church, whose power was
quickly crushed by the Almighty.

3:7. I saw the tents of Ethiopia for their iniquity, the curtains of
the land of Madian shall be troubled.

Ethiopia. . .the land of the Blacks, and Madian, are here taken for the
enemies of God and his people:  who shall perish for their iniquity.

3:8. Wast thou angry, O Lord, with the rivers?  or was thy wrath upon
the rivers?  or thy indignation in the sea?  Who will ride upon thy
horses:  and thy chariots are salvation.

With the rivers, etc. . .He alludes to the wonders wrought heretofore by
the Lord in favour of his people Israel, when the waters of the rivers,
viz., of Arnon and Jordan, and of the Red Sea, retired before their
face:  when he came as it were with his horses and chariots to save them
when he took up his bow for their defence, in consequence of the oath
he had made to their tribes:  when the mountains trembled, and the deep
stood with its waves raised up in a heap, as with hands lifted up to
heaven:  when the sun and the moon stood still at his command, etc., to
comply with his anger, not against the rivers and sea, but against the
enemies of his people.  How much more will he do in favour of his Son:
and against the enemies of his church?

3:9. Thou wilt surely take up thy bow:  according to the oaths which
thou hast spoken to the tribes.  Thou wilt divide the rivers of the
earth.

3:10. The mountains saw thee, and were grieved:  the great body of
waters passed away.  The deep put forth its voice:  the deep lifted up
its hands.

3:11. The sun and the moon stood still in their habitation, in the
light of thy arrows, they shall go in the brightness of thy glittering
spear.

3:12. In thy anger thou wilt tread the earth under foot:  in thy wrath
thou wilt astonish the nations.

3:13. Thou wentest forth for the salvation of thy people:  for salvation
with thy Christ.  Thou struckest the head of the house of the wicked:
thou hast laid bare his foundation even to the neck.

The head of the house of the wicked. . .Such was Pharao heretofore:  such
shall Antichrist be hereafter.

3:14. Thou hast cursed his sceptres, the head of his warriors, them
that came out as a whirlwind to scatter me.  Their joy was like that of
him that devoureth the poor man in secret.

3:15. Thou madest a way in the sea for thy horses, in the mud of many
waters.

Thou madest a way in the sea, etc. . .To deliver thy people from the
Egyptian bondage:  and thou shalt work the like wonders in the spiritual
way, to rescue the children of the church from their enemies.

3:16. I have heard and my bowels were troubled:  my lips trembled at the
voice.  Let rottenness enter into my bones, and swarm under me.  That I
may rest in the day of tribulation:  that I may go up to our people that
are girded.

I have heard, etc. . .Viz., the evils that are now coming upon the
Israelites for their sins; and that shall come hereafter upon all
impenitent sinners; and the foresight that I have of these miseries
makes me willing to die, that I may be at rest, before this general
tribulation comes, in which all good things shall be withdrawn from the
wicked.--Ibid.  That I may go up to our people, etc. . .That I may join
the happy company in the bosom of Abraham, that are girded, that is,
prepared for their journey, by which they shall attend their Lord, when
he shall ascend into heaven.  To which high and happy place, my Jesus,
that is, my Saviour, the great conqueror of death and hell, shall one
day conduct me rejoicing and singing psalms of praise, ver. 18 and 19.

3:17. For the fig tree shall not blossom:  and there shall be no spring
in the vines.  The labour of the olive tree shall fail:  and the fields
shall yield no food:  the flock shall be cut off from the fold, and
there shall be no herd in the stalls.

3:18. But I will rejoice in the Lord:  and I will joy in God my Jesus.

3:19. The Lord God is my strength:  and he will make my feet like the
feet of harts:  and he the conqueror will lead me upon my high places
singing psalms.




THE PROPHECY OF SOPHONIAS



SOPHONIAS, whose name, saith St. Jerome, signifies The Watchman of the
Lord, or The hidden of the Lord, prophesied in the beginning of the
reign of Josias.  He was a native of Sarabatha, and of the tribe of
Simeon, according to the more general opinion.  He prophesied the
punishments of the Jews, for their idolatry and other crimes; also the
punishments that were to come on divers nations; the coming of Christ,
the conversion of the Gentiles, the blindness of the Jews, and their
conversion towards the end of the world.



Sophonias Chapter 1


For divers enormous sins, the kingdom of Juda is threatened with severe
judgment.

1:1. The word of the Lord that came to Sophonias the son of Chusi, the
son of Godolias, the son of Amarias, the son of Ezechias, in the days
of Josias, the son of Amon king of Juda.

1:2. Gathering, I will gather together all things from off the face of
the land, saith the Lord:

Gathering, I will gather, etc. . .That is, I will assuredly take away,
and wholly consume, either by captivity, or death, both men and beasts
out of this land.

1:3. I will gather man, and beast, I will gather the birds of the air,
and the fishes of the sea:  and the ungodly shall meet with ruin:  and I
will destroy men from off the face of the land, saith the Lord.

1:4. And I will stretch out my hand upon Juda, and upon all the
inhabitants of Jerusalem:  and I will destroy out of this place the
remnant of Baal, and the names of the wardens of the temples with the
priests:

The wardens, etc. . .Viz., of the temples of the idols.  AEdituos, in
Hebrew, the Chemarims, that is, such as kindle the fires, or burn
incense.

1:5. And them that worship the host of heaven upon the tops of houses,
and them that adore, and swear by the Lord, and swear by Melchom.

Melchom. . .The idol of the Ammonites.

1:6. And them that turn away from following after the Lord, and that
have not sought the Lord, nor searched after him.

1:7. Be silent before the face of the Lord God:  for the day of the Lord
is near, for the Lord hath prepared a victim, he hath sanctified his
guests.

1:8. And it shall come to pass in the day of the victim of the Lord,
that I will visit upon the princes, and upon the king's sons, and upon
all such as are clothed with strange apparel:

1:9. And I will visit in that day upon every one that entereth
arrogantly over the threshold:  them that fill the house of the Lord
their God with iniquity and deceit.

1:10. And there shall be in that day, saith the Lord, the noise of a
cry from the fish gate, and a howling from the Second, and a great
destruction from the hills.

The Second. . .A part of the city so called.

1:11. Howl, ye inhabitants of the Morter.  All the people of Chanaan is
hush, all are cut off that were wrapped up in silver.

The Morter. . .Maktesh.  A valley in or near Jerusalem.  Ibid.  The
people of Chanaan. . .So he calls the Jews, from their following the
wicked ways of the Chanaanites.

1:12. And it shall come to pass at that time, that I will search
Jerusalem with lamps, and will visit upon the men that are settled on
their lees:  that say in their hearts:  The Lord will not do good, nor
will he do evil.

Settled on their lees. . .That is, the wealthy, and such as live at
their ease, resting upon their riches, like wine upon the lees.

1:13. And their strength shall become a booty, and their houses as a
desert:  and they shall build houses, and shall not dwell in them:  and
they shall plant vineyards, and shall not drink the wine of them.

1:14. The great day of the Lord is near, it is near and exceeding
swift:  the voice of the day of the Lord is bitter, the mighty man shall
there meet with tribulation.

1:15. That day is a day of wrath, a day of tribulation and distress, a
day of calamity and misery, a day of darkness and obscurity, a day of
clouds and whirlwinds,

1:16. A day of the trumpet and alarm against the fenced cities, and
against the high bulwarks.

1:17. And I will distress men, and they shall walk like blind men,
because they have sinned against the Lord:  and their blood shall be
poured out as earth, and their bodies as dung.

1:18. Neither shall their silver and their gold be able to deliver them
in the day of the wrath of the Lord:  all the land shall be devoured by
the fire of his jealousy:  for he shall make even a speedy destruction
of all them that dwell in the land.



Sophonias Chapter 2


An exhortation to repentance.  The judgment of the Philistines, of the
Moabites, and the Ammonites; of the Ethiopians and the Assyrians.

2:1.Assemble yourselves together, be gathered together, O nation not
worthy to be loved:

2:2. Before the decree bring forth the day as dust passing away, before
the fierce anger of the Lord come upon you, before the day of the
Lord's indignation come upon you.

2:3. Seek the Lord, all ye meek of the earth, you that have wrought his
judgment:  seek the just, seek the meek:  if by any means you may be hid
in the day of the Lord's indignation.

2:4. For Gaza shall be destroyed, and Ascalon shall be a desert, they
shall cast out Azotus at noonday, and Accaron shall be rooted up.

2:5. Woe to you that inhabit the sea coast, O nation of reprobates:  the
word of the Lord upon you, O Chanaan, the land of the Philistines, and
I will destroy thee, so that there shall not be an inhabitant.

2:6. And the sea coast shall be the resting place of shepherds, and
folds for cattle:

2:7. And it shall be the portion of him that shall remain of the house
of Juda, there they shall feed:  in the houses of Ascalon they shall
rest in the evening:  because the Lord their God will visit them, and
bring back their captivity.

2:8. I have heard the reproach of Moab, and the blasphemies of the
children of Ammon, with which they reproached my people, and have
magnified themselves upon their borders.

2:9. Therefore as I live, saith the Lord of hosts the God of Israel,
Moab shall be as Sodom, and the children of Ammon as Gomorrha, the
dryness of thorns, and heaps of salt, and a desert even for ever:  the
remnant of my people shall make a spoil of them, and the residue of my
nation shall possess them.

2:10. This shall befall them for their pride:  because they have
blasphemed, and have been magnified against the people of the Lord of
hosts.

2:11. The Lord shall be terrible upon them, and shall consume all the
gods of the earth:  and they shall adore him every man from his own
place, all the islands of the Gentiles.

2:12. You Ethiopians, also shall be slain with my sword.

2:13. And he will stretch out his hand upon the north, and will destroy
Assyria:  and he will make the beautiful city a wilderness, and as a
place not passable, and as a desert.

The beautiful city, viz. . .Ninive, which was destroyed soon after this,
viz., in the sixteenth year of the reign of Josias.

2:14. And flocks shall lie down in the midst thereof, all the beasts of
the nations:  and the bittern and the urchin shall lodge in the
threshold thereof:  the voice of the singing bird in the window, the
raven on the upper post, for I will consume her strength.

2:15. This is the glorious city that dwelt in security:  that said in
her heart:  I am, and there is none beside me:  how is she become a
desert, a place for beasts to lie down in?  every one that passeth by
her shall hiss, and wag his hand.



Sophonias Chapter 3


A woe to Jerusalem for her sins.  A prophecy of the conversion of the
Gentiles, and of the poor of Israel:  God shall be with them.  The Jews
shall be converted at last.

3:1. Woe to the provoking and redeemed city, the dove.

3:2. She hath not hearkened to the voice, neither hath she received
discipline:  she hath not trusted in the Lord, she drew not near to her
God.

3:3. Her princes are in the midst of her as roaring lions:  her judges
are evening wolves, they left nothing for the morning.

3:4. Her prophets are senseless, men without faith:  her priests have
polluted the sanctuary, they have acted unjustly against the law.

3:5. The just Lord is in the midst thereof, he will not do iniquity:  in
the morning, in the morning he will bring his judgment to light, and it
shall not be hid:  but the wicked man hath not known shame.

3:6. I have destroyed the nations, and their towers are beaten down:  I
have made their ways desert, so that there is none that passeth by:
their cities are desolate, there is not a man remaining, nor any
inhabitant.

3:7. I said:  Surely thou wilt fear me, thou wilt receive correction:
and her dwelling shall not perish, for all things wherein I have
visited her:  but they rose early, and corrupted all their thoughts.

3:8. Wherefore expect me, saith the Lord, in the day of my resurrection
that is to come, for my judgment is to assemble the Gentiles, and to
gather the kingdoms:  and to pour upon them my indignation, all my
fierce anger:  for with the fire of my jealousy shall all the earth be
devoured.

3:9. Because then I will restore to the people a chosen lip, that all
may call upon the name of the Lord, and may serve him with one
shoulder.

3:10. From beyond the rivers of Ethiopia, shall my suppliants, the
children of my dispersed people, bring me an offering.

3:11. In that day thou shalt not be ashamed for all thy doings, wherein
thou hast transgressed against me for then I will take away out of the
midst of thee thy proud boasters, and thou shalt no more be lifted up
because of my holy mountain.

3:12. And I will leave in the midst of thee a poor and needy people:
and they shall hope in the name of the Lord.

3:13. The remnant of Israel shall not do iniquity, nor speak lies, nor
shall a deceitful tongue be found in their mouth:  for they shall feed,
and shall lie down, and there shall be none to make them afraid.

3:14. Give praise, O daughter of Sion:  shout, O Israel:  be glad, and
rejoice with all thy heart, O daughter of Jerusalem.

3:15. The Lord hath taken away thy judgment, he hath turned away thy
enemies:  the king of Israel, the Lord, is in the midst of thee, thou
shalt fear evil no more.

3:16. In that day it shall be said to Jerusalem:  Fear not:  to Sion:
Let not thy hands be weakened.

3:17. The Lord thy God in the midst of thee is mighty, he will save:  he
will rejoice over thee with gladness, he will be silent in his love, he
will be joyful over thee in praise.

3:18. The triflers that were departed from the law, I will gather
together, because they were of thee:  that thou mayest no more suffer
reproach for them.

3:19. Behold I will cut off all that have afflicted thee at that time:
and I will save her that halteth, and will gather her that was cast
out:  and I will get them praise, and a name, in all the land where they
had been put to confusion.

3:20. At that time, when I will bring you:  and at the time that I will
gather you:  for I will give you a name, and praise among all the people
of the earth, when I shall have brought back your captivity before your
eyes, saith the Lord.




THE PROPHECY OF AGGEUS



AGGEUS was one of those that returned from the captivity of Babylon, in
the first year of the reign of king Cyrus.  He was sent by the Lord, in
the second year of the reign of king Darius, the son of Hystaspes, to
exhort Zorobabel the prince of Juda, and Jesus the high priest, to the
building of the temple; which they had begun, but left off again
through the opposition of the Samaritans.  In consequence of this
exhortation they proceeded in the building and finished the temple.  And
the prophet was commissioned by the Lord to assure them that this
second temple should be more glorious than the former, because the
Messiah should honour it with his presence:  signifying withal how much
the church of the New Testament should excel that of the Old Testament.



Aggeus Chapter 1


The people are reproved for neglecting to build the temple.  They are
encouraged to set about the work.

1:1. In the second year of Darius the king, in the sixth month, in the
first day of the month, the word of the Lord came by the hand of Aggeus
the prophet, to Zorobabel the son of Salathiel, governor of Juda, and
to Jesus the son of Josedec the high priest, saying:

1:2. Thus saith the Lord of hosts, saying:  This people saith:  The time
is not yet come for building the house of the Lord.

1:3. And the word of the Lord came by the hand of Aggeus the prophet,
saying:

1:4. Is it time for you to dwell in ceiled houses, and this house lie
desolate?

1:5. And now thus saith the Lord of hosts:  Set your hearts to consider
your ways.

1:6. You have sowed much, and brought in little:  you have eaten, but
have not had enough:  you have drunk, but have not been filled with
drink:  you have clothed yourselves, but have not been warmed:  and he
that hath earned wages, put them into a bag with holes.

1:7. Thus saith the Lord of hosts:  Set your hearts upon your ways:

1:8. Go up to the mountain, bring timber, and build the house:  and it
shall be acceptable to me, and I shall be glorified, saith the Lord.

1:9. You have looked for more, and behold it became less, and you
brought it home, and I blowed it away:  why, saith the Lord of hosts?
because my house is desolate, and you make haste every man to his own
house.

1:10. Therefore the heavens over you were stayed from giving dew, and
the earth was hindered from yielding her fruits:

1:11. And I called for a drought upon the land, and upon the mountains,
and upon the corn, and upon the wine, and upon the oil, and upon all
that the ground bringeth forth, and upon men, and upon beasts, and upon
all the labour of the hands.

1:12. Then Zorobabel the son of Salathiel, and Jesus the son of Josedec
the high priest, and all the remnant of the people hearkened to the
voice of the Lord their God, and to the words of Aggeus the prophet, as
the Lord their God sent him to them:  and the people feared before the
Lord.

1:13. And Aggeus the messenger of the Lord, as one of the messengers of
the Lord, spoke, saying to the people:  I am with you, saith the Lord.

1:14. And the Lord stirred up the spirit of Zorobabel the son of
Salathiel governor of Juda, and the spirit of Jesus the son of Josedec
the high priest, and the spirit of all the rest of the people:  and they
went in, and did the work in the house of the Lord of Hosts their God.



Aggeus Chapter 2


Christ by his coming shall make the latter temple more glorious than
the former.  The blessing of God shall reward their labour in building.
God's promise to Zorobabel.

2:1. In the four and twentieth day of the month, in the sixth month, in
the second year of Darius the king, they began.

2:2. And in the seventh month, the word of the Lord came by the hand of
Aggeus the prophet, saying:

2:3. Speak to Zorobabel the son of Salathiel the governor of Juda, and
to Jesus the son of Josedec the high priest, and to the rest of the
people, saying:

2:4. Who is left among you, that saw this house in its first glory?  and
how do you see it now?  is it not in comparison to that as nothing in
your eyes?

2:5. Yet now take courage, O Zorobabel, saith the Lord, and take
courage, Jesus the son of Josedec the high priest, and take courage,
all ye people of the land, saith the Lord of hosts:  and perform (for I
am with you, saith the Lord of hosts)

2:6. The word that I convenanted with you when you came out of the land
of Egypt:  and my spirit shall be in the midst of you:  fear not.

2:7. For thus saith the Lord of hosts:  Yet one little while, and I will
move the heaven and the earth, and the sea, and the dry land.

2:8. And I will move all nations:  AND THE DESIRED OF ALL NATIONS SHALL
COME:  and I will fill this house with glory:  saith the Lord of hosts.

2:9. The silver is mine, and the gold is mine, saith the Lord of hosts.

2:10. Great shall be the glory of this last house more than of the
first, saith the Lord of hosts:  and in this place I will give peace,
saith the Lord of hosts.

2:11. In the four and twentieth day of the ninth month, in the second
year of Darius the king, the word of the Lord came to Aggeus the
prophet, saying:

2:12. Thus saith the Lord of hosts:  Ask the priests the law, saying:

2:13. If a man carry sanctified flesh in the skirt of his garment, and
touch with his skirt, bread, or pottage, or wine, or oil, or any meat:
shall it be sanctified?  And the priests answered, and said:  No.

2:14. And Aggeus said:  If one that is unclean by occasion of a soul
touch any of all these things, shall it be defiled?  And the priests
answered, and said:  It shall be defiled.

By occasion of a soul. . .That is, by having touched the dead; in which
case, according to the prescription of the law, Num. 19.13, 22, a
person not only became unclean himself, but made every thing that he
touched unclean.  The prophet applies all this to the people, whose
souls remained unclean by neglecting the temple of God; and therefore
were not sanctified by the flesh they offered in sacrifice:  but rather
defiled their sacrifices by approaching to them in the state of
uncleanness.

2:15. And Aggeus answered, and said:  So is this people, and so is this
nation before my face, saith the Lord, and so is all the work of their
hands:  and all that they have offered there, shall be defiled.

2:16. And now consider in your hearts, from this day and upward, before
there was a stone laid upon a stone in the temple of the Lord.

2:17. When you went to a heap of twenty bushels, and they became ten:
and you went into the press, to press out fifty vessels, and they
became twenty.

2:18. I struck you with a blasting wind, and all the works of your hand
with the mildew and with hail, yet there was none among you that
returned to me, saith the Lord.

2:19. Set your hearts from this day, and henceforward, from the four
and twentieth day of the ninth month:  from the day that the foundations
of the temple of the Lord were laid, and lay it up in your hearts.

2:20. Is the seed as yet sprung up?  or hath the vine, and the fig tree,
and the pomegranate, and the olive tree as yet flourished?  from this
day I will bless you.

2:21. And the word of the Lord came a second time to Aggeus in the four
and twentieth day of the month, saying:

2:22. Speak to Zorobabel the governor of Juda, saying:  I will move both
heaven and earth.

2:23. And I will overthrow the throne of kingdoms, and will destroy the
strength of the kingdom of the Gentiles:  and I will overthrow the
chariot, and him that rideth therein:  and the horses and their riders
shall come down, every one by the sword of his brother.

2:24. In that day, saith the Lord of hosts, I will take thee, O
Zorobabel the son of Salathiel, my servant, saith the Lord, and will
make thee as a signet, for I have chosen thee, saith the Lord of hosts.

O Zorobabel. . .This promise principally relates to Christ, who was of
the race of Zorobabel.




THE PROPHECY OF ZACHARIAS



ZACHARIAS began to prophesy in the same year as Aggeus, and upon the
same occasion.  His prophecy is full of mysterious figures and promises
of blessings, partly relating to the synagogue, and partly to the
church of Christ.



Zacharias Chapter 1


The prophet exhorts the people to return to God, and declares his
visions, by which he puts them in hopes of better times.

1:1. In the eighth month, in the second year of king Darius, the word
of the Lord came to Zacharias the son of Barachias, the son of Addo,
the prophet, saying:

1:2. The Lord hath been exceeding angry with your fathers.

1:3. And thou shalt say to them:  Thus saith the Lord of hosts:  Turn ye
to me, saith the Lord of hosts:  and I will turn to you, saith the Lord
of hosts.

1:4. Be not as your fathers, to whom the former prophets have cried,
saying:  Thus saith the Lord of hosts:  Turn ye from your evil ways, and
from your wicked thoughts:  but they did not give ear, neither did they
hearken to me, saith the Lord.

1:5. Your fathers, where are they?  and the prophets, shall they live
always?

1:6. But yet my words, and my ordinances, which I gave in charge to my
servants the prophets, did they not take hold of your fathers, and they
returned, and said:  As the Lord of hosts thought to do to us according
to our ways, and according to our devices, so he hath done to us.

1:7. In the four and twentieth day of the eleventh month which is
called Sabath, in the second year of Darius, the word of the Lord came
to Zacharias the son of Barachias, the son of Addo, the prophet,
saying:

1:8. I saw by night, and behold a man riding upon a red horse, and he
stood among the myrtle trees, that were in the bottom:  and behind him
were horses, red, speckled, and white.

A man. . .An angel in the shape of a man.  It was probably Michael, the
guardian angel of the church of God.

1:9. And I said:  What are these, my Lord?  and the angel that spoke in
me, said to me:  I will shew thee what these are:

1:10. And the man that stood among the myrtle trees answered, and said:
These are they, whom the Lord hath sent to walk through the earth.

These are they, etc. . .The guardian angels of provinces and nations.

1:11. And they answered the angel of the Lord, that stood among the
myrtle trees, and said:  We have walked through the earth, and behold
all the earth is inhabited, and is at rest.

1:12. And the angel of the Lord answered, and said:  O Lord of hosts,
how long wilt thou not have mercy on Jerusalem, and on the cities of
Juda, with which thou hast been angry?  this is now the seventieth year.

The seventieth year. . .Viz., from the beginning of the seige of
Jerusalem, in the ninth year of king Sedecias, to the second year of
king Darius.  These seventy years of the desolation of Jerusalem and the
cities of Juda, are different from the seventy years of captivity
foretold by Jeremias; which began in the fourth year of Joakim, and
ended in the first year of king Cyrus.

1:13. And the Lord answered the angel, that spoke in me, good words,
comfortable words.

1:14. And the angel that spoke in me, said to me:  Cry thou, saying:
Thus saith the Lord of hosts:  I am zealous for Jerusalem, and Sion with
a great zeal.

1:15. And I am angry with a great anger with the wealthy nations:  for I
was angry a little, but they helped forward the evil.

1:16. Therefore thus saith the Lord:  I will return to Jerusalem in
mercies:  my house shall be built in it, saith the Lord of hosts:  and
the building line shall be stretched forth upon Jerusalem.

1:17. Cry yet, saying:  Thus saith the Lord of hosts:  My cities shall
yet flow with good things:  and the Lord will yet comfort Sion, and he
will yet choose Jerusalem.

1:18. And I lifted up my eyes, and saw:  and behold four horns.

Four horns. . .The four horns represent the empires, or kingdoms, that
persecute and oppress the kingdom of God.

1:19. And I said to the angel that spoke in me:  What are these?  And he
said to me:  These are the horns that have scattered Juda, and Israel,
and Jerusalem.

1:20. And the Lord shewed me four smiths.

Four smiths. . .The four smiths, or carpenters ( for faber may signify
either) represent those whom God makes his instruments in bringing to
nothing the power of persecutors.

1:21. And I said:  What come these to do?  and he spoke, saying:  These
are the horns which have scattered Juda every man apart, and none of
them lifted up his head:  and these are come to fray them, to cast down
the horns of the nations, that have lifted up the horn upon the land of
Juda to scatter it.



Zacharias Chapter 2


Under the name of Jerusalem, he prophesieth the progress of the church
of Christ, by the conversion of some Jews and many Gentiles.

2:1. And I lifted up my eyes, and saw, and behold a man, with a
measuring line in his hand.

2:2. And I said:  Whither goest thou?  and he said to me:  To measure
Jerusalem, and to see how great is the breadth thereof, and how great
the length thereof.

2:3. And behold the angel that spoke in me went forth, and another
angel went out to meet him.

2:4. And he said to him:  Run, speak to this young man, saying:
Jerusalem shall be inhabited without walls, by reason of the multitude
of men, and of the beasts in the midst thereof.

Jerusalem shall be inhabited without walls. . .This must be understood
of the spiritual Jerusalem, the church of Christ.

2:5. And I will be to it, saith the Lord, a wall of fire round about:
and I will be in glory in the midst thereof.

2:6. O, O flee ye out of the land of the north, saith the Lord, for I
have scattered you into the four winds of heaven, saith the Lord.

2:7. O Sion, flee, thou that dwellest with the daughter of Babylon:

2:8. For thus saith the Lord of hosts:  After the glory he hath sent me
to the nations that have robbed you:  for he that toucheth you, toucheth
the apple of my eye:

2:9. For behold, I lift up my hand upon them, and they shall be a prey
to those that served them:  and you shall know that the Lord of hosts
sent me.

2:10. Sing praise, and rejoice, O daughter of Sion:  for behold I come,
and I will dwell in the midst of thee:  saith the Lord.

2:11. And many nations shall be joined to the Lord in that day, and
they shall be my people, and I will dwell in the midst of thee:  and
thou shalt know that the Lord of hosts hath sent me to thee.

2:12. And the Lord shall possess Juda his portion in the sanctified
land:  and he shall yet choose Jerusalem.

2:13. Let all flesh be silent at the presence of the Lord:  for he is
risen up out of his holy habitation.



Zacharias Chapter 3


In a vision Satan appeareth accusing the high priest.  He is cleansed
from his sins.  Christ is promised, and great fruit from his passion.

3:1. And the Lord shewed me Jesus the high priest standing before the
angel of the Lord:  and Satan stood on his right hand to be his
adversary.

Jesus. . .Alias, Josue, the son of Josedec, the high priest of that
time.

3:2. And the Lord said to Satan:  The Lord rebuke thee, O Satan:  and the
Lord that chose Jerusalem rebuke thee:  Is not this a brand plucked out
of the fire?

3:3. And Jesus was clothed with filthy garments:  and he stood before
the face of the angel.

With filthy garments. . .Negligences and sins.

3:4. Who answered, and said to them that stood before him, saying:  Take
away the filthy garments from him.  And he said to him:  Behold I have
taken away thy iniquity, and have clothed thee with change of garments.

3:5. And he said:  Put a clean mitre upon his head:  and they put a clean
mitre upon his head, and clothed him with garments, and the angel of
the Lord stood.

3:6. And the angel of the Lord protested to Jesus, saying:

3:7. Thus saith the Lord of hosts:  If thou wilt walk in my ways, and
keep my charge, thou also shalt judge my house, and shalt keep my
courts, and I will give thee some of them that are now present here to
walk with thee.

I will give thee, etc. . .Angels to attend and assist thee.

3:8. Hear, O Jesus thou high priest, thou and thy friends that dwell
before thee, for they are portending men:  for behold, I WILL BRING MY
SERVANT THE ORIENT.

Portending men. . .That is, men, who by words and actions are to
foreshew wonders that are to come.--Ibid.  My servant the
Orient. . .Christ, who according to his humanity is the servant of God,
is called the Orient from his rising like the sun in the east to
enlighten the world.

3:9. For behold the stone that I have laid before Jesus:  upon one stone
there are seven eyes:  behold I will grave the graving thereof, saith
the Lord of hosts:  and I will take away the iniquity of that land in
one day.

The stone. . .Another emblem of Christ, the rock, foundation, and corner
stone of his church.--Ibid.  Seven eyes. . .The manifold providence of
Christ over his church, or the seven gifts of the spirit of God.--Ibid.
One day. . .Viz., the day of the passion of Christ, the source of all
our good:  when this precious stone shall be graved, that is, cut and
pierced, with whips, thorns, nails, and spear.

3:10. In that day, saith the Lord of hosts, every man shall call his
friend under the vine and under the fig tree.



Zacharias Chapter 4


The vision of the golden candlestick and seven lamps, and of the two
olive trees.

4:1. And the angel that spoke in me came again:  and he waked me, as a
man that is wakened out of his sleep.

4:2. And he said to me:  What seest thou?  And I said:  I have looked,
and behold a candlestick all of gold, and its lamp upon the top of it:
and the seven lights thereof upon it:  and seven funnels for the lights
that were upon the top thereof.

A candlestick, etc. . .The temple of God that was then in building; and
in a more sublime sense, the church of Christ.

4:3. And two olive trees over it:  one upon the right side of the lamp,
and the other upon the left side thereof.

4:4. And I answered, and said to the angel that spoke in me, saying:
What are these things, my lord?

4:5. And the angel that spoke in me answered, and said to me:  Knowest
thou not what these things are?  And I said:  No, my lord.

4:6. And he answered, and spoke to me, saying:  This is the word of the
Lord to Zorobabel, saying:  Not with an army, nor by might, but by my
spirit, saith the Lord of hosts.

To Zorobabel. . .This vision was in favour of Zorobabel:  to assure him
of success in the building of the temple, which he had begun, signified
by the candlestick; the lamp of which, without any other industry, was
supplied with oil, dropping from the two olive trees, and distributed
by the seven funnels or pipes, to maintain the seven lights.

4:7. Who art thou, O great mountain, before Zorobabel?  thou shalt
become a plain:  and he shall bring out the chief stone, and shall give
equal grace to the grace thereof.

Great mountain. . .So he calls the opposition made by the enemies of
God's people; which nevertheless, without an army or might on their
side, was quashed by divine providence.--Ibid.  Shall give equal grace,
etc. . .Shall add grace to grace, or beauty to beauty.

4:8. And the word of the Lord came to me, saying:

4:9. The hands of Zorobabel have laid the foundations of this house,
and his hands shall finish it:  and you shall know that the Lord of
hosts hath sent me to you.

4:10. For who hath despised little days?  and they shall rejoice, and
shall see the tin plummet in the hand of Zorobabel.  These are the seven
eyes of the Lord, that run to and fro through the whole earth.

Little days. . .That is, these small and feeble beginnings of the temple
of God.--Ibid.  The tin plummet. . .Literally, the stone of tin.  He
means the builder's plummet, which Zorobabel shall hold in his hand for
the finishing the building.--Ibid.  The seven eyes. . .The providence of
God, that oversees and orders all things.

4:11. And I answered, and said to him:  What are these two olive trees
upon the right side of the candlestick, and upon the left side thereof
?

4:12. And I answered again, and said to him:  What are the two olive
branches, that are by the two golden beaks, in which are the funnels of
gold?

4:13. And he spoke to me, saying:  Knowest thou not what these are?  And
I said:  No, my lord.

4:14. And he said:  These are two sons of oil who stand before the Lord
of the whole earth.

Two sons of oil. . .That is, the two anointed ones of the Lord; viz.,
Jesus the high priest, and Zorobabel the prince.



Zacharias Chapter 5


The vision of the flying volume, and of the woman in the vessel.

5:1. And I turned and lifted up my eyes:  and I saw, and behold a volume
flying.

A volume. . .That is, a parchment, according to the form of the ancient
books, which, from being rolled up, were called volumes.

5:2. And he said to me:  What seest thou?  And I said:  I see a volume
flying:  the length thereof is twenty cubits, and the breadth thereof
ten cubits.

5:3. And he said to me:  This is the curse that goeth forth over the
face of the earth:  for every thief shall be judged as is there written:
and every one that sweareth in like manner shall be judged by it.

5:4. I will bring it forth, saith the Lord of hosts:  and it shall come
to the house of the thief, and to the house of him that sweareth
falsely by my name:  and it shall remain in the midst of his house, and
shall consume it, with the timber thereof, and the stones thereof.

5:5. And the angel went forth that spoke in me, and he said to me:  Lift
up thy eyes, and see what this is, that goeth forth.

5:6. And I said:  What is it?  And he said:  This is a vessel going
forth.  And he said:  This is their eye in all the earth.

This is their eye. . .This is what they fix their eye upon:  or this is a
resemblance and figure of them, viz., of sinners.

5:7. And behold a talent of lead was carried, and behold a woman
sitting in the midst of the vessel.

5:8. And he said:  This is wickedness.  And he cast her into the midst of
the vessel, and cast the weight of lead upon the mouth thereof.

5:9. And I lifted up my eyes and looked:  and behold there came out two
women, and wind was in their wings, and they had wings like the wings
of a kite:  and they lifted up the vessel between the earth and the
heaven.

5:10. And I said to the angel that spoke in me:  Whither do these carry
the vessel?

5:11. And he said to me:  That a house may be built for it in the land
of Sennaar, and that it may be established, and set there upon its own
basis.

The land of Sennaar. . .Where Babel or Babylon was built, Gen. 11.,
where note, that Babylon in holy writ is often taken for the city of
the devil:  that is, for the whole congregation of the wicked:  as
Jerusalem is taken for the city and people of God.



Zacharias Chapter 6


The vision of the four chariots.  Crowns are ordered for Jesus the high
priest, as a type of Christ.

6:1. And I turned, and lifted up my eyes, and saw:  and behold four
chariots came out from the midst of two mountains:  and the mountains
were mountains of brass.

Four chariots. . .The four great empires of the Chaldeans, Persians,
Grecians, and Romans.  Or perhaps by the fourth chariot are represented
the kings of Egypt and of Asia, the descendants of Ptolemeus and
Seleucus.

6:2. In the first chariot were red horses, and in the second chariot
black horses.

6:3. And in the third chariot white horses, and in the fourth chariot
grisled horses, and strong ones.

6:4. And I answered, and said to the angel that spoke in me:  What are
these, my lord?

6:5. And the angel answered, and said to me:  These are the four winds
of the heaven, which go forth to stand before the Lord of all the
earth.

6:6. That in which were the black horses went forth into the land of
the north, and the white went forth after them:  and the grisled went
forth to the land the south.

The land of the north. . .So Babylon is called; because it lay to the
north in respect of Jerusalem.  The black horses, that is, the Medes and
Persians:  and after them Alexander and his Greeks, signified by the
white horses, went thither because they conquered Babylon, executed
upon it the judgments of God, which is signified, ver. 8, by the
expression of quieting his spirit.--Ibid.  The land of the
south. . .Egypt, which lay to the south of Jerusalem, and was occupied
first by Ptolemeus, and then by the Romans.

6:7. And they that were most strong, went out, and sought to go, and to
run to and fro through all the earth.  And he said:  Go, walk throughout
the earth:  and they walked throughout the earth.

6:8. And he called me, and spoke to me, saying:  Behold they that go
forth into the land of the north, have quieted my spirit in the land of
the north.

6:9. And the word of the Lord came to me, saying:

6:10. Take of them of the captivity, of Holdai, and of Tobias, and of
Idaias; thou shalt come in that day, a shalt go into the house of
Josias, the son of Sophonias, who came out of Babylon.

6:11. And thou shalt take gold and silver:  and shalt make crowns, and
thou shalt set them on the head of Jesus the son of Josedec, the high
priest.

6:12. And thou shalt speak to him, saying:  Thus saith the Lord of
hosts, saying:  BEHOLD A MAN, THE ORIENT IS HIS NAME:  and under him
shall he spring up, a shall build a temple to the Lord.

6:13. Yea, he shall build a temple to the Lord:  and he shall bear the
glory, and shall sit, and rule upon his throne:  and he shall be a
priest upon his throne, and the counsel of peace shall be between them
both.

Between them both. . .That is, he shall unite in himself the two offices
or dignities of king and priest.

6:14. And the crowns shall be to Helem, and Tobias, and Idaias, and to
Hem, the son of Sophonias, a memorial in the temple of the Lord.

6:15. And they that are far off, shall come and shall build in the
temple of the Lord:  and you shall know that the Lord of hosts sent me
to you.  But this shall come to pass, if hearing you will hear the voice
of the Lord your God.



Zacharias Chapter 7


The people inquire concerning fasting:  they are admonished to fast from
sin.

7:1. And it came to pass in the fourth year of king Darius, that the
word of the Lord came to Zacharias, in the fourth day of the ninth
month, which is Casleu.

7:2. When Sarasar, and Rogommelech, and the men that were with him,
sent to the house of God, to entreat the face of the Lord:

7:3. To speak to the priests of the house of the Lord of hosts, and to
the prophets, saying:  Must I weep in the fifth month, or must I
sanctify myself as I have now done for many years?

The fifth month. . .They fasted on the tenth day of the fifth month;
because on that day the temple was burnt.  Therefore they inquire
whether they are to continue the fast, after the temple is rebuilt.  See
this query answered in the 19th verse of the following chapter.

7:4. And the word of the Lord of hosts came to me, saying:

7:5. Speak to all the people of the land, and to the priests, saying:
When you fasted, and mourned in the fifth and the seventh month for
these seventy years:  did you keep a fast unto me?

7:6. And when you did eat and drink, did you not eat for yourselves,
and drink for yourselves?

7:7. Are not these the words which the Lord spoke by the hand of the
former prophets, when Jerusalem as yet was inhabited, and was wealthy,
both itself and the cities round about it, and there were inhabitants
towards the south, and in the plain?

7:8. And the word of the Lord came to Zacharias, saying:

7:9. Thus saith the Lord of hosts, saying:  Judge ye true judgment, and
shew ye mercy and compassion every man to his brother.

7:10. And oppress not the widow, and the fatherless, and the stranger,
and the poor:  and let not a man devise evil in his heart against his
brother.

7:11. But they would not hearken, and they turned away the shoulder to
depart:  and they stopped their ears, not to hear.

7:12. And they made their heart as the adamant stone, lest they should
hear the law, and the words which the Lord of hosts sent in his spirit
by the hand of the former prophets:  so a great indignation came from
Lord of hosts.

7:13. And it came to pass that as he spoke, and they heard not:  so
shall they cry, and I will not hear, saith the Lord of hosts.

7:14. And I dispersed them throughout all kingdoms, which they know
not:  and the land was left desolate behind them, so that no man passed
through or returned:  and they changed the delightful land into a
wilderness.



Zacharias Chapter 8


Joyful promises to Jerusalem:  fully verified in the church of Christ.

8:1. And the word of the Lord of hosts came to me, saying:

8:2. Thus saith the Lord of hosts:  I have been jealous for Sion with a
great jealousy, and with a great indignation have I been jealous for
her.

8:3. Thus saith the Lord of hosts:  I am returned to Sion, and I will
dwell in the midst of Jerusalem:  and Jerusalem shall be called The city
of truth, and the mountain of the Lord of hosts, The sanctified
mountain.

8:4. Thus saith the Lord of hosts:  There shall yet old men and old
women dwell in the streets of Jerusalem:  and every man with his staff
in his hand through multitude of days.

8:5. And the streets of the city shall be full of boys and girls,
playing in the streets thereof.

8:6. Thus saith the Lord of hosts:  If it seem hard in the eyes of the
remnant of this people in those days:  shall it be hard in my eyes,
saith the Lord of hosts?

8:7. Thus saith the Lord of hosts:  Behold I will save my people from
the land of the east, and from the land of the going down of the sun.

8:8. And I will bring them, and they shall dwell in the midst of
Jerusalem:  and they shall be my people, and I will be their God in
truth and in justice.

8:9. Thus saith the Lord of hosts:  Let your hands be strengthened, you
that hear in these days these words by the mouth of the prophets, in
the day that the house of the Lord of hosts was founded, that the
temple might be built.

8:10. For before those days there was no hire for men, neither was
there hire for beasts, neither was there peace to him that came in, nor
to him that went out, because of the tribulation:  and I let all men go
every one against his neighbour.

8:11. But now I will not deal with the remnant of this people according
to the former days, saith the Lord of hosts.

8:12. But there shall be the seed of peace:  the vine shall yield her
fruit, and the earth shall give her increase, and the heavens shall
give their dew:  and I will cause the remnant of this people to possess
all these things.

8:13. And it shall come to pass, that as you were a curse among the
Gentiles, O house of Juda, and house of Israel:  so will I save you, and
you shall be a blessing:  fear not, let your hands be strengthened.

8:14. For thus saith the Lord of hosts:  As I purposed io afflict you,
when your fathers had provoked me to wrath, saith the Lord,

8:15. And I had no mercy:  so turning again I have thought in these days
to do good to the house of Juda, and Jerusalem:  fear not.

8:16. These then are the things, which you shall do:  Speak ye truth
every one to his neighbour; judge ye truth and judgment of peace in
your gates.

8:17. And let none of you imagine evil in your hearts against his
friend:  and love not a false oath:  for all these are the things that I
hate, saith the Lord.

8:18. And the word of the Lord of hosts came to me, saying:

8:19. Thus saith the Lord of hosts:  The fast of the fourth month, and
the fast of the fifth, and the fast of the seventh, and the fast of the
tenth shall be to the house of Juda, joy, and gladness, and great
solemnities:  only love ye truth and peace.

The fast of the fourth month, etc. . .They fasted, on the ninth day of
the fourth month, because on that day Nabuchodonosor took Jerusalem,
Jer. 52.6.  On the tenth day of the fifth month, because on that day the
temple was burnt, Jer. 52.12.  On the third day of the seventh month,
for the murder of Godolias, Jer. 41.2.  And on the tenth day of the
tenth month, because on that day the Chaldeans began to besiege
Jerusalem, 4 Kings 25.1.  All these fasts, if they will be obedient for
the future, shall be changed, as is here promised, into joyful
solemnities.

8:20. Thus saith the Lord of hosts, until people come and dwell in many
cities,

8:21. And the inhabitants go one to another, saying:  Let us go, and
entreat the face of the Lord, and let us seek the Lord of hosts:  I also
will go.

8:22. And many peoples, and strong nations shall come to seek the Lord
of hosts in Jerusalem, and to entreat the face of the Lord.

8:23. Thus saith the Lord of hosts:  In those days, wherein ten men of
all languages of the Gentiles shall take hold, and shall hold fast the
skirt of one that is a Jew, saying:  We will go with you:  for we have
heard that God is with you.

Ten men, etc. . .Many of the Gentiles became proselytes to the Jewish
religion before Christ:  but many more were converted to Christ by the
apostles and other preachers of the Jewish nation.



Zacharias Chapter 9


God will defend his church, and bring over even her enemies to the
faith.  The meek coming of Christ, to bring peace, to deliver the
captives by his blood, and to give us all good things.

9:1. The burden of the word of the Lord in the land of Hadrach, and of
Damascus the rest thereof:  for the eye of man, and of all the tribes of
Israel is the Lord's.

Hadrach. . .Syria.

9:2. Emath also in the borders thereof, and Tyre, and Sidon:  for they
have taken to themselves to be exceeding wise.

9:3. And Tyre hath built herself a strong hold, and heaped together
silver as earth, and gold as the mire of the streets.

9:4. Behold the Lord shall possess her, and shall strike her strength
in the sea, and she shall be devoured with fire.

9:5. Ascalon shall see, and shall fear, and Gaza, and shall be very
sorrowful:  and Accaron, because her hope is confounded:  and the king
shall perish from Gaza, and Ascalon shall not be inhabited.

9:6. And the divider shall sit in Azotus, and I will destroy the pride
of the Philistines.

9:7. And I will take away his blood out of his mouth, and his
abominations from between his teeth:  and even he shall be left to our
God, and he shall be as a governor in Juda, and Accaron as a Jebusite.

His blood. . .It is spoken of the Philistines, and particularly of
Azotus, (where the temple of Dagon was,) and contains a prophecy of the
conversion of that people from their bloody sacrifices and abominations
to the worship of the true God.

9:8. And I will encompass my house with them that serve me in war,
going and returning, and the oppressor shall no more pass through them:
for now I have seen with my eyes.

That serve me in war. . .Viz., the Machabees.

9:9. Rejoice greatly, O daughter of Sion, shout for joy, O daughter of
Jerusalem:  BEHOLD THY KING will come to thee, the just and saviour:  he
is poor, and riding upon an ass, and upon a colt, the foal of an ass.

9:10. And I will destroy the chariot out of Ephraim, and the horse out
of Jerusalem, and the bow for war shall be broken:  and he shall speak
peace to the Gentiles, and his power shall be from sea to sea, and from
the rivers even to the end of the earth.

9:11. Thou also by the blood of thy testament hast sent forth thy
prisoners out of the pit, wherein is no water.

9:12. Return to the strong hold, ye prisoners of hope, I will render
thee double as I declare today.

9:13. Because I have bent Juda for me as a bow, I have filled Ephraim:
and I will raise up thy sons, O Sion, above thy sons, O Greece, and I
will make thee as the sword of the mighty.

Thy sons, O Sion, etc. . .Viz., the apostles, who, in the spiritual way,
conquered the Greeks, and subdued them to Christ.

9:14. And the Lord God shall be seen over them, and his dart shall go
forth as lightning:  and the Lord God will sound the trumpet, and go in
the whirlwind of the south.

9:15. The Lord of hosts will protect them:  and they shall devour, and
subdue with the stones of the sling:  and drinking they shall be
inebriated as it were with wine, and they shall be filled as bowls, and
as the horns of the altar.

9:16. And the Lord their God will save them in that day, as the flock
of his people:  for holy stones shall be lifted up over his land.

Holy stones. . .The apostles, who shall be as pillars and monuments in
the church.

9:17. For what is the good thing of him, and what is his beautiful
thing, but the corn of the elect, and wine springing forth virgins?

The corn, etc. . .His most excellent gift is the blessed Eucharist,
called here The corn, that is, the bread of the elect, and the wine
springing forth virgins; that is, maketh virgins to bud, or spring
forth, as it were, like flowers among thorns; because it has a
wonderful efficacy to give and preserve purity.



Zacharias Chapter 10


God is to be sought to, and not idols.  The victories of his church,
which shall arise originally from the Jewish nation.

10:1. Ask ye of the Lord rain in the latter season, and the Lord will
make snows, and will give them showers of rain, to every one grass in
the field.

10:2. For the idols have spoken what was unprofitable, and the diviners
have seen a lie, and the dreamers have spoken vanity:  they comforted in
vain:  therefore they were led away as a flock:  they shall be afflicted,
because they have no shepherd.

10:3. My wrath is kindled against the shepherds, and I will visit upon
the buck goats:  for the Lord of hosts hath visited his flock, the house
of Juda, and hath made them as the horse of his glory in the battle.

10:4. Out of him shall come forth the corner, out of him the pin, out
of him the bow of battle, out of him ever exacter together.

10:5. And they shall be as mighty men, treading under foot the mire of
the ways in battle:  and they shall fight, because the Lord is with
them, and the riders of horses shall be confounded.

10:6. And I will strengthen the house of Juda, and save the house of
Joseph:  and I will bring them back again, because I will have mercy on
them:  and they shall be as they were when I had not cast them off, for
I am the Lord their God, and will hear them.

10:7. And they shall be as the valiant men of Ephraim, and their heart
shall rejoice as through wine:  and their children shall see, and shall
rejoice, and their heart shall be joyful in the Lord.

10:8. I will whistle for them, and I will gather them together, because
I have redeemed them:  and I will multiply them as they were multiplied
before.

10:9. And I will sow them among peoples:  and from afar they shall
remember me:  and they shall live with their children, and shall return.

10:10. And I will bring them back out of the land of Egypt, and I will
gather them from among the Assyrians:  and will bring them to the land
of Galaad, and Libanus, and place shall not be found for them.

10:11. And he shall pass over the strait of the sea, and shall strike
the waves in the sea, and all the depths of the river shall be
confounded, and the pride of Assyria shall be humbled, and the sceptre
of Egypt shall depart.

10:12. I will strengthen them in the Lord, and they shall walk in his
name, saith the Lord.



Zacharias Chapter 11


The destruction of Jerusalem and the temple.  God's dealings with the
Jews, and their reprobation.

11:1. Open thy gates, O Libanus, and let fire devour thy cedars.

O Libanus. . .So Jerusalem, and more particularly the temple, is called
by the prophets, from its height, and from its being built of the
cedars of Libanus.--Ibid.  Thy cedars. . .Thy princes and chief men.

11:2. Howl, thou fir tree, for the cedar is fallen, for the mighty are
laid waste:  howl, ye oaks of Basan, because the fenced forest is cut
down.

11:3. The voice of the howling of the shepherds, because their glory is
laid waste:  the voice of the roaring of the lions, because the pride of
the Jordan is spoiled.

11:4. Thus saith the Lord my God:  Feed the flock of the slaughter,

11:5. Which they that possessed, slew, and repented not, and they sold
them, saying:  Blessed be the Lord, we are become rich:  and their
shepherds spared them not.

11:6. And I will no more spare the inhabitants of the land, saith the
Lord:  behold I will deliver the men, every one into his neighbour's
hand, and into the hand of his king:  and they shall destroy the land,
and I will not deliver it out of their hand.

Every one into his neighbour's hand, etc. . .This alludes to the last
siege of Jerusalem, in which the different factions of the Jews
destroyed one another; and they that remained fell into the hands of
their king, that is, of the Roman emperor, of whom they had said, John
19.15, we have no king but Caesar.

11:7. And I will feed the flock of slaughter for this, O ye poor of the
flock.  And I took unto me two rods, one I called Beauty, and the other
I called a Cord, and I fed the flock.

Two rods. . .Or shepherd's staves, meaning the different ways of God's
dealing with his people; the one, by sweet means, called the rod of
Beauty:  the other, by bands and punishments, called the Cord.  And where
both these rods are made of no use or effect by the obstinacy of
sinners, the rods are broken, and such sinners are given up to a
reprobate sense, as the Jews were.

11:8. And I cut off three shepherds in one month, and my soul was
straitened in their regard:  for their soul also varied in my regard.

Three shepherds in one month. . .That is, in a very short time.  By these
three shepherds probably are meant the latter princes and high priests
of the Jews, whose reign was short.

11:9. And I said:  I will not feed you:  that which dieth, let it die:
and that which is cut off, let it be cut off:  and let the rest devour
every one the flesh of his neighbour.

11:10. And I took my rod that was called Beauty, and I cut it asunder
to make void my covenant, which I had made with all people.

11:11. And it was made void in that day:  and so the poor of the flock
that keep for me, understood that it is the word of the Lord.

11:12. And I said to them:  If it be good in your eyes, bring hither my
wages:  and if not, be quiet.  And they weighed for my wages thirty
pieces of silver.

11:13. And the Lord said to me:  Cast it to the statuary, a handsome
price, that I was prized at by them.  And I took the thirty pieces of
silver, and I cast them into the house of the Lord to the statuary.

The statuary. . .The Hebrew word signifies also a potter.

11:14. And I cut off my second rod that was called a Cord, that I might
break the brotherhood between Juda and Israel.

11:15. And the Lord said to me:  Take to thee yet the instruments of a
foolish shepherd.

A foolish shepherd. . .This was to represent the foolish, that is, the
wicked princes and priests that should rule the people, before their
utter desolation.

11:16. For behold I will raise up a shepherd in the land, who shall not
visit what is forsaken, nor seek what is scattered, nor heal what is
broken, nor nourish that which standeth, and he shall eat the flesh of
the fat ones, and break their hoofs.

11:17. O shepherd, and idol, that forsaketh the flock:  the sword upon
his arm and upon his right eye:  his arm shall quite wither away, and
his right eye shall be utterly darkened.



Zacharias Chapter 12


God shall protect his church against her persecutors.  The mourning of
Jerusalem.

12:1. The burden of the word of the Lord upon Israel.  Thus saith the
Lord, who stretcheth forth the heavens, and layeth the foundations of
the earth, and formeth the spirit of man in him:

12:2. Behold I will make Jerusalem a lintel of surfeiting to all the
people round about:  and Juda also shall be in the siege against
Jerusalem.

A lintel of surfeiting. . .That is, a door into which they shall seek to
enter, to glut themselves with blood; but they shall stumble, and fall
like men stupefied with wine.  It seems to allude to the times of
Antiochus, and to the victories of the Machabees.

12:3. And it shall come to pass in that day, that I will make Jerusalem
a burdensome stone to all people:  all that shall lift it up shall be
rent and torn, and all the kingdoms of the earth shall be gathered
together against her.

12:4. In that day, saith the Lord, I will strike every horse with
astonishment, and his rider with madness:  and I will open my eyes upon
the house of Juda, and will strike every horse of the nations with
blindness.

12:5. And the governors of Juda shall say in their heart:  Let the
inhabitants of Jerusalem be strengthened for me in the Lord of hosts,
their God.

12:6. In that day I will make the governors of Juda like a furnace of
fire amongst wood, and as a firebrand amongst hay:  and they shall
devour all the people round about, to the right hand, and to the left:
and Jerusalem shall be inhabited again in her own place in Jerusalem.

12:7. And the Lord shall save the tabernacles of Jada, as in the
beginning:  that the house of David, and the glory of the inhabitants of
Jerusalem, may not boast and magnify themselves against Juda.

12:8. In that day shall the Lord protect the inhabitants of Jerusalem,
and he that hath offended among them in that day shall be as David:  and
the house of David, as that of God, as an angel of the Lord in their
sight.

12:9. And it shall come to pass in that day, that I will seek to
destroy all the nations that come against Jerusalem.

12:10. And I will pour out upon the house of David, and upon the
inhabitants of Jerusalem, the spirit of grace, and of prayers:  and they
shall look upon me, whom they have pierced:  and they shall mourn for
him as one mourneth for an only son, and they shall grieve over him, as
the manner is to grieve for the death of the firstborn.

12:11. In that day there shall be a great lamentation in Jerusalem like
the lamentation of Adadremmon in the plain of Mageddon.

Adadremmon. . .A place near Mageddon, where the good king Josias was
slain, and much lamented by his people.

12:12. And the land shall mourn:  families and families apart:  the
families of the house of David apart, and their women apart:

12:13. The families of the house of Nathan apart, and their women
apart:  the families of the house of Levi apart, and their women apart:
the families of Semei apart, and their women apart.

12:14. All the rest of the families, families and families apart, and
their women apart.



Zacharias Chapter 13


The fountain of Christ.  Idols and false prophets shall be extirpated:
Christ shall suffer:  his people shall be tried by fire.

13:1. In that day there shall be a fountain open to the house of David,
and to the inhabitants of Jerusalem:  for the washing of the sinner, and
of the unclean woman.

13:2. And it shall come to pass in that day, saith the Lord of hosts,
that I will destroy the names of idols out of the earth, and they shall
be remembered no more:  and I will take away the false prophets, and the
unclean spirit out of the earth.

13:3. And it shall come to pass, that when any man shall prophesy any
more, his father and his mother that brought him into the world, shall
say to him:  Thou shalt not live:  because thou hast spoken a lie in the
name of the Lord.  And his father, and his mother, his parents, shall
thrust him through, when he shall prophesy.

13:4. And it shall come to pass in that day, that the prophets shall be
confounded, every one by his own vision, when he shall prophesy,
neither shall they be clad with a garment of sackcloth, to deceive:

13:5. But he shall say:  I am no prophet, I am a husbandman:  for Adam is
my example from my youth.

13:6. And they shall say to him:  What are these wounds in the midst of
thy hands?  And he shall say:  With these I was wounded in the house of
them that loved me.

13:7. Awake, O sword, against my shepherd, and against the man that
cleaveth to me, saith the Lord of hosts:  strike the shepherd, and the
sheep shall be scattered:  and I will turn my hand to the little ones.

13:8. And there shall be in all the earth, saith the Lord, two parts in
it shall be scattered, and shall perish:  but the third part shall be
left therein.

13:9. And I will bring the third part through the fire, and will refine
them as silver is refined:  and I will try them as gold is tried.  They
shall call on my name, and I will hear them.  I will say:  Thou art my
people:  and they shall say:  The Lord is my God.



Zacharias Chapter 14


After the persecutions of the church shall follow great prosperity.
Persecutors shall be punished:  so shall all that will not serve God in
his church.

14:1. Behold the days of the Lord shall come, and thy spoils shall be
divided in the midst of thee.

14:2. And I will gather all nations to Jerusalem to battle, and the
city shall be taken, and the houses shall be rifled, and the women
shall be defiled:  and half of the city shall go forth into captivity,
and the rest of the people shall not be taken away out of the city.

I will gather, etc. . .This seems to be a prophecy of what was done by
Antiochus.

14:3. Then the Lord shall go forth, and shall fight against those
nations, as when he fought in the day of battle.

14:4. And his feet shall stand in that day upon the mount of Olives,
which is over against Jerusalem towards the east:  and the mount of
Olives shall be divided in the midst thereof to the east, and to the
west with a very great opening, and half of the mountain shall be
separated to the north, and half thereof to the south.

14:5. And you shall flee to the valley of those mountains, for the
valley of the mountains shall be joined even to the next, and you shall
flee as you fled from the face of the earthquake in the days of Ozias
king of Juda:  and the Lord my God shall come, and all the saints with
him.

14:6. And it shall come to pass in that day, that there shall be no
light, but cold and frost.

No light. . .Viz., in that dismal time of persecution of Antiochus, when
it was neither day nor night:  (ver. 7) because they neither had the
comfortable light of the day, nor the repose of the night.

14:7. And there shall be one day, which is known to the Lord, not day
nor night:  and in the time of the evening there shall be light:

In the time of the evening there shall be light. . .An unexpected light
shall arise by the means of the Machabees, when things shall seem to be
at the worst.

14:8. And it shall come to pass in that day, that living waters shall
go out from Jerusalem:  half of them to the east sea, and half of them
to the last sea:  they shall be in summer and in winter.

Living waters. . .Viz., the gospel of Christ.

14:9. And the Lord shall be king over all the earth:  in that day there
shall be one Lord, and his name shall be one.

14:10. And all the land shall return even to the desert, from the hill
to Remmon to the south of Jerusalem:  and she shall be exalted, and
shall dwell in her own place, from the gate of Benjamin even to the
place of the former gate, and even to the gate of the corners:  and from
the tower of Hananeel even to the king's winepresses.

All the land shall return, etc. . .This, in some measure, was verified
by the means of the Machabees:  but is rather to be taken in a spiritual
sense, as relating to the propagation of the church, and kingdom of
Christ, the true Jerusalem, which alone shall never fall under the
anathema of destruction, or God's curse.

14:11. And people shall dwell in it, and there shall be no more an
anathema:  but Jerusalem shall sit secure.

14:12. And this shall be the plague wherewith the Lord shall strike all
nations that have fought against Jerusalem:  the flesh of every one
shall consume away while they stand upon their feet, and their eyes
shall consume away in their holes, and their tongue shall consume away
in their mouth.

The flesh of every one shall consume, etc. . .Such judgments as these
have often fallen upon the persecutors of God's church, as appears by
many instances in history.

14:13. In that day there shall be a great tumult from the Lord among
them:  and a man shall take the hand of his neighbour, and his hand
shall be clasped upon his neighbour's hand.

14:14. And even Juda shall fight against Jerusalem:  and the riches of
all nations round about shall be gathered together, gold, and silver,
and garments in great abundance.

Even Juda, etc. . .The carnal Jews, and other false brothers, shall join
in persecuting the church.

14:15. And the destruction of the horse, and of the mule, and of the
camel, and of the ass, and of all the beasts, that shall be in those
tents, shall be like this destruction.

Shall be like this destruction. . .That is, the beasts shall be
destroyed as well as the men:  the common soldiers as well as their
leaders.

14:16. And all they that shall be left of all nations that came against
Jerusalem, shall go up from year to year, to adore the King, the Lord
of hosts, and to keep the feast of tabernacles.

They that shall be left, etc. . .That is, many of them that persecuted
the church shall be converted to its faith and communion.--Ibid.  To keep
the feast of tabernacles. . .This feast was kept by the Jews in memory
of their sojourning forty years in the desert, in their way to the land
of promise.  And in the spiritual sense is duly kept by all such
Christians as in their earthly pilgrimage are continually advancing
toward their true home, the heavenly Jerusalem; by the help of the
sacraments and sacrifice of the church.  And they that neglect this must
not look for the kind showers of divine grace, to give fruitfulness to
their souls.

14:17. And it shall come to pass, that he that shall not go up of the
families of the land to Jerusalem, to adore the King, the Lord of
hosts, there shall be no rain upon them.

14:18. And if the family of Egypt go not up nor come:  neither shall it
be upon them, but there shall be destruction wherewith the Lord will
strike all nations that will not go up to keep the feast of
tabernacles.

14:19. This shall be the sin of Egypt, and this the sin of all nations,
that will not go up to keep the feast of tabernacles.

14:20. In that day that which is upon the bridle of the horse shall be
holy to the Lord:  and the caldrons in the house of the Lord shall be as
the phials before the altar.

That which is upon the bridle, etc. . .The golden ornaments of the
bridles, etc., shall be turned into offerings in the house of God.  And
there shall be an abundance of caldrons and phials for the sacrifices
of the temple; by which is meant, under a figure, the great resort
there shall be to the temple, that is, to the church of Christ, and her
sacrifice.

14:21. And every caldron in Jerusalem and Juda shall be sanctified to
the Lord of hosts:  and all that sacrifice shall come, and take of them,
and shall seethe in them:  and the merchant shall be no more in the
house of the Lord of hosts in that day.

The merchant shall be no more, etc. . .Or, as some render it, The
Chanaanite shall be no more, etc., that is, the profane and unbelievers
shall have no title to be in the house of the Lord.  Or there shall be
no occasion for buyers or sellers of oxen, or sheep, or doves, in the
house of God, such as Jesus Christ cast out of the temple.




THE PROPHECY OF MALACHIAS



MALACHIAS, whose name signifies The Angel of the Lord, was contemporary
with NEHEMIAS, and by some is believed to have been the same person as
ESDRAS.  He was the last of the prophets, in the order of time, and
flourished about four hundred years before Christ.  He foretells the
coming of Christ; the reprobation of the Jews and their sacrifices; and
the calling of the Gentiles, who shall offer up to God in every place
an acceptable sacrifice.



Malachias Chapter 1


God reproaches the Jews with their ingratitude:  and the priests for not
offering pure sacrifices.  He will accept of the sacrifice that shall be
offered in every place among the Gentiles.

1:1. The burden of the word of the Lord to Israel by the hand of
Malachias.

1:2. I have loved you, saith the Lord:  and you have said:  Wherein hast
thou loved us?  Was not Esau brother to Jacob, saith the Lord, and I
have loved Jacob,

I have loved Jacob, etc. . .I have preferred his posterity, to make them
my chosen people, and to lead them with my blessings, without any merit
on their part, and though they have been always ungrateful; whilst I
have rejected Esau, and executed severe judgments upon his posterity.
Not that God punished Esau, or his posterity, beyond their desert:  but
that by his free election and grace he loved Jacob, and favoured his
posterity above their deserts.  See the annotations upon Rom. 9.

1:3. But have hated Esau?  and I have made his mountains a wilderness,
and given his inheritance to the dragons of the desert.

1:4. But if Edom shall say:  We are destroyed, but we will return and
build up what hath been destroyed:  thus saith the Lord of hosts:  They
shall build up, and I will throw down:  and they shall be called the
borders of wickedness, and the people with whom the Lord is angry for
ever.

1:5. And your eyes shall see:  and you shall say:  The Lord be magnified
upon the border of Israel.

1:6. The son honoureth the father, and the servant his master:  if then
I be a father, where is my honour?  and if I be a master, where is my
fear:  saith the Lord of hosts.

1:7. To you, O priests, that despise my name, and have said:  Wherein
have we despised thy name?  You offer polluted bread upon my altar, and
you say:  Wherein have we polluted thee?  In that you say:  The table of
the Lord is contemptible.

1:8. If you offer the blind for sacrifice, is it not evil?  and if you
offer the lame and the sick, is it not evil?  offer it to thy prince, if
he will be pleased with it, or if he will regard thy face, saith the
Lord of hosts.

1:9. And now beseech ye the face of God, that he may have mercy on you,
(for by your hand hath this been done,) if by any means he will receive
your faces, saith the Lord of hosts.

1:10. Who is there among you, that will shut the doors, and will kindle
the fire on my altar gratis?  I have no pleasure in you, saith the Lord
of hosts:  and I will not receive a gift of your hand.

1:11. For from the rising of the sun even to the going down, my name is
great among the Gentiles, and in every place there is sacrifice, and
there is offered to my name a clean oblation:  for my name is great
among the Gentiles, saith the Lord of hosts.

A clean oblation. . .Viz., the precious body and blood of Christ in the
eucharistic sacrifice.

1:12. And you have profaned it in that you say:  The table of the Lord
is defiled:  and that which is laid thereupon is contemptible with the
fire that devoureth it.

1:13. And you have said:  Behold of our labour, and you puffed it away,
saith the Lord of hosts, and you brought in of rapine the lame, and the
sick, and brought in an offering:  shall I accept it at your hands,
saith the Lord?

Behold of our labour, etc. . .You pretended labour and weariness, when
you brought your offering; and so made it of no value, by offering it
with an evil mind.  Moreover, what you offered was both defective in
itself, and gotten by rapine and extortion.

1:14. Cursed is the deceitful man that hath in his flock a male, and
making a vow offereth in sacrifice that which is feeble to the Lord:
for I am a great King, saith the Lord of hosts, and my name is dreadful
among the Gentiles.



Malachias Chapter 2


The priests are sharply reproved for neglecting their covenant.  The
evil of marrying with idolaters:  and too easily putting away their
wives.

2:1. And now, O ye priests, this commandment is to you.

2:2. If you will not hear, and if you will not lay it to heart, to give
glory to my name, saith the Lord of hosts:  I will send poverty upon
you, and will curse your blessings, yea I will curse them, because you
have not laid it to heart.

2:3. Behold, I will cast the shoulder to you, and will scatter upon
your face the dung of your solemnities, and it shall take you away with
it.

I will cast the shoulder to you. . .I will cast away the shoulder, which
in the law was appointed to be your portion, and fling it at you in my
anger:  and will reject both you and your festivals like dung.

2:4. And you shall know that I sent you this commandment, that my
covenant might be with Levi, saith the Lord of hosts.

2:5. My covenant was with him of life and peace:  and I gave him fear:
and he feared me, and he was afraid before my name.

2:6. The law of truth was in his mouth, and iniquity was not found in
his lips:  he walked with me in peace, and in equity, and turned many
away from iniquity.

2:7. For the lips of the priests shall keep knowledge, and they shall
seek the law at his mouth:  because he is the angel of the Lord of
hosts.

The angel. . .Viz., the minister and messenger.

2:8. But you have departed out of the way, and have caused many to
stumble at the law:  you have made void the covenant of Levi, saith the
Lord of hosts.

2:9. Therefore have I also made you contemptible, and base before all
people, as you have not kept my ways, and have accepted persons in the
law.

2:10. Have we not all one father?  hath not one God created us?  why then
doth every one of us despise his brother, violating the covenant of our
fathers?

2:11. Juda hath transgressed, and abomination hath been committed in
Israel, and in Jerusalem:  for Juda hath profaned the holiness of the
Lord, which he loved, and hath married the daughter of a strange god.

2:12. The Lord will cut off the man that hath done this, both the
master, and the scholar, out of the tabernacles of Jacob, and him that
offereth an offering to the Lord of hosts.

2:13. And this again have you done, you have covered the altar of the
Lord with tears, with weeping, and bellowing, so that I have no more a
regard to sacrifice, neither do I accept any atonement at your hands.

With tears. . .Viz., by occasion of your wives, whom you have put away:
and who came to weep and lament before the altar.

2:14. And you have said:  For what cause?  Because the Lord hath been
witness between thee, and the wife of thy youth, whom thou hast
despised:  yet she was thy partner, and the wife of thy covenant.

2:15. Did not one make her, and she is the residue of his spirit?  And
what doth one seek, but the seed of God?  Keep then your spirit, and
despise not the wife of thy youth.

2:16. When thou shalt hate her put her away, saith the Lord, the God of
Israel:  but iniquity shalt cover his garment, saith the Lord of hosts,
keep your spirit, and despise not.

Iniquity shall cover his garment. . .Viz., of every man that putteth
away his wife without just cause; notwithstanding that God permitted it
in the law, to prevent the evil of murder.

2:17. You have wearied the Lord with your words, and you said:  Wherein
have we wearied him?  In that you say:  Every one that doth evil, is good
in the sight of the Lord, and such please him:  or surely where is the
God of judgment?



Malachias Chapter 3


Christ shall come to his temple, and purify the priesthood.  They that
continue in their evil ways shall be punished:  but true penitents shall
receive a blessing.

3:1. Behold I send my angel, and he shall prepare the way before my
face.  And presently the Lord, whom you seek, and the angel of the
testament, whom you desire, shall come to his temple.  Behold, he
cometh, saith the Lord of hosts.

My angel. . .Viz., John the Baptist, the messenger of God, and
forerunner of Christ.

3:2. And who shall be able to think of the day of his coming?  and who
shall stand to see him?  for he is like a refining fire, and like the
fuller's herb:

3:3. And he shall sit refining and cleansing the silver, and he shall
purify the sons of Levi, and shall refine them as gold, and as silver,
and they shall offer sacrifices to the Lord in justice.

3:4. And the sacrifice of Juda and of Jerusalem shall please the Lord,
as in the days of old, and in the ancient years.

3:5. And I will come to you in judgment, and will be a speedy witness
against sorcerers, and adulterers, and false swearers, and them that
oppress the hireling in his wages, the widows, and the fatherless:  and
oppress the stranger, and have not feared me, saith the Lord of hosts.

3:6. For I am the Lord, and I change not:  and you the sons of Jacob are
not consumed.

3:7. For from the days of your fathers you have departed from my
ordinances, and have not kept them:  Return to me, and I will return to
you, saith the Lord of hosts.  And you have said:  Wherein shall we
return?

3:8. Shall a man afflict God, for you afflict me.  And you have said:
Wherein do we afflict thee?  in tithes and in firstfruits.

3:9. And you are cursed with want, and you afflict me, even the whole
nation of you.

3:10. Bring all the tithes into the storehouse, that there may be meat
in my house, and try me in this, saith the Lord:  if I open not unto you
the flood-gates of heaven, and pour you out a blessing even to
abundance.

3:11. And I will rebuke for your sakes the devourer, and he shall not
spoil the fruit of your land:  neither shall the vine in the field be
barren, saith the Lord of hosts.

3:12. And all nations shall call you blessed:  for you shall be a
delightful land, saith the Lord of hosts.

3:13. Your words have been unsufferable to me, saith the Lord.

3:14. And you have said:  What have we spoken against thee?  You have
said:  He laboureth in vain that serveth God, and what profit is it that
we have kept his ordinances, and that we have walked sorrowful before
the Lord of hosts?

3:15. Wherefore now we call the proud people happy, for they that work
wickedness are built up, and they have tempted God and are preserved.

3:16. Then they that feared the Lord, spoke every one with his
neighbour:  and the Lord gave ear, and heard it:  and a book of
remembrance was written before him for them that fear the Lord, and
think on his name.

3:17. And they shall be my special possession, saith the Lord of hosts,
in the day that I do judgment:  and I will spare them, as a man spareth
his son that serveth him.

3:18. And you shall return, and shall see the difference between the
just and the wicked:  and between him that serveth God, and him that
serveth him not.



Malachias Chapter 4


The judgment of the wicked, and reward of the just.  An exhortation to
observe the law.  Elias shall come for the conversion of the Jews.

4:1. For behold the day shall come kindled as a furnace:  and all the
proud, and all that do wickedly shall be stubble:  and the day that
cometh shall set them on fire, saith the Lord of hosts, it shall not
leave them root, nor branch.

4:2. But unto you that fear my name, the Sun of justice shall arise,
and health in his wings:  and you shall go forth, and shall leap like
calves of the herd.

4:3. And you shall tread down the wicked when they shall be ashes under
the sole of your feet in the day that I do this, saith the Lord of
hosts.

4:4. Remember the law of Moses my servant, which I commanded him in
Horeb for all Israel, the precepts, and judgments.

4:5. Behold, I will send you Elias the prophet, before the coming of
the great and dreadful day of the Lord.

4:6. And he shall turn the heart of the fathers to the children, and
the heart of the children to their fathers:  lest I come, and strike the
earth with anathema.

He shall turn the heart, etc. . .By bringing over the Jews to the faith
of Christ, he shall reconcile them to their fathers, viz., the
partiarchs and prophets; whose hearts for many ages have been turned
away from them, because of their refusing to believe in Christ.--Ibid.
With anathema. . .In the Hebrew, Cherem, that is, with utter
destruction.




THE FIRST BOOK OF MACHABEES



These books are so called, because they contain the history of the
people of God under the command of Judas Machabeus and his brethren:
and he, as some will have it, was surnamed Machabeus, from carrying in
his ensigns, or standards, those words of Exodus 15.11, Who is like to
thee among the strong, O Lord:  in which the initial letters, in the
Hebrew, are M. C. B. E. I.  It is not known who is the author of these
books.  But as to their authority, though they are not received by the
Jews, saith St. Augustine, (lib. 18, De Civ. Dei, c. 36,) they are
received by the church:  who, in settling her canon of the scriptures,
chose rather to be directed by the tradition she had received from the
apostles of Christ, than by that of the scribes and Pharisees.  And as
the church has declared these two Books canonical, even in two general
councils, viz., Florence and Trent, there can be no doubt of their
authenticity.



1 Machabees Chapter 1


The reign of Alexander and his successors:  Antiochus rifles and
profanes the temple of God:  and persecutes unto death all that will not
forsake the law of God, and the religion of their fathers.

1:1. Now it came to pass, after that Alexander the son of Philip the
Macedonian, who first reigned in Greece, coming out of the land of
Cethim, had overthrown Darius, king of the Persians and Medes:

1:2. He fought many battles, and took the strong holds of all, and slew
the kings of the earth:

1:3. And he went through even to the ends of the earth:  and took the
spoils of many nations:  and the earth was quiet before him.

1:4. And he gathered a power, and a very strong army:  and his heart was
exalted and lifted up:

1:5. And he subdued countries of nations, and princes; and they became
tributaries to him.

1:6. And after these things, he fell down upon his bed, and knew that
he should die.

1:7. And he called his servants, the nobles that were brought up with
him from his youth:  and he divided his kingdom among them, while he was
yet alive.

Divided his kingdom, etc. . .This is otherwise related by Q.  Curtius;
though he acknowledges that divers were of that opinion, and that it
had been delivered by some authors, lib. 10.  But here we find from the
sacred text, that he was in error.

1:8. And Alexander reigned twelve years, and he died.

1:9. And his servants made themselves kings, every one in his place:

1:10. And they all put crowns upon themselves after his death, and
their sons after them, many years; and evils were multiplied in the
earth.

1:11. And there came out of them a wicked root, Antiochus the
Illustrious, the son of king Antiochus, who had been a hostage at Rome:
and he reigned in the hundred and thirty-seventh year of the kingdom of
the Greeks.

Antiochus the Illustrius. . .Epiphanes, the younger son of Antiochus the
Great, who usurped the kingdom, to the prejudice of his nephew
Demetrius, son of his elder brother Seleucus Philopater.--Ibid.  Of the
kingdom of the Greeks. . .Counting, not from the beginning of the reign
of Alexander, but from the first year of Seleucus Nicator.

1:12. In those days there went out of Israel wicked men, and they
persuaded many, saying:  Let us go and make a covenant with the heathens
that are round about us:  for since we departed from them, many evils
have befallen us.

1:13. And the word seemed good in their eyes.

1:14. And some of the people determined to do this, and went to the
king:  and he gave them license to do after the ordinances of the
heathens.

1:15. And they built a place of exercise in Jerusalem, according to the
laws of the nations:

1:16. And they made themselves prepuces, and departed from the holy
covenant, and joined themselves to the heathens, and were sold to do
evil:

1:17. And the kingdom was established before Antiochus, and he had a
mind to reign over the land of Egypt, that he might reign over two
kingdoms.

1:18. And he entered into Egypt with a great multitude, with chariots,
and elephants, and horsemen, and a great number of ships:

1:19. And he made war against Ptolemee king of Egypt; but Ptolemee was
afraid at his presence and fled, and many were wounded unto death.

1:20. And he took the strong cities in the land of Egypt:  and he took
the spoils of the land of Egypt.

1:21. And after Antiochus had ravaged Egypt, in the hundred and
forty-third year, he returned and went up against Israel.

1:22. And he went up to Jerusalem, with a great multitude.

1:23. And he proudly entered into the sanctuary, and took away the
golden altar, and the candlestick of light, and all the vessels
thereof, and the table of proposition, and the pouring vessels, and the
vials, and the little mortars of gold, and the veil, and the crowns,
and the golden ornament that was before the temple:  and he broke them
all in pieces.

1:24. And he took the silver and gold, and the precious vessels:  and he
took the hidden treasures, which he found:  and when he had taken all
away, he departed into his own country.

1:25. And he made a great slaughter of men, and spoke very proudly.

1:26. And there was great mourning in Israel, and in every place where
they were:

1:27. And the princes, and the ancients mourned, and the virgins and
the young men were made feeble, and the beauty of the women was
changed.

1:28. Every bridegroom took up lamentation:  and the bride that sat in
the marriage bed, mourned:

1:29. And the land was moved for the inhabitants thereof, and all the
house of Jacob was covered with confusion.

1:30. And after two full years, the king sent the chief collector of
his tributes to the cities of Juda, and he came to Jerusalem with a
great multitude.

The chief collector, etc. . .Apollonius.

1:31. And he spoke to them peaceable words in deceit; and they believed
him.

1:32. And he fell upon the city suddenly, and struck it with a great
slaughter, and destroyed much people in Israel.

1:33. And he took the spoils of the city, and burnt it with fire, and
threw down the houses thereof, and the walls thereof round about:

1:34. And they took the women captive, and the children, and the cattle
they possessed.

1:35. And they built the city of David with a great and strong wall,
and with strong towers, and made it a fortress for them:

The city of David. . .That is, the castle of Sion.

1:36. And they placed there a sinful nation, wicked men, and they
fortified themselves therein:  and they stored up armour; and victuals,
and gathered together the spoils of Jerusalem;

1:37. And laid them up there:  and they became a great snare.

1:38. And this was a place to lie in wait against the sanctuary, and an
evil devil in Israel.

An evil devil. . .That is, an adversary watching constantly to do harm,
as the evil spirit is always watching and seeking whom he may devour.

1:39. And they shed innocent blood round about the sanctuary, and
defiled the holy place.

1:40. And the inhabitants of Jerusalem fled away by reason of them and
the city was made the habitation of strangers, and she became a
stranger to her own seed, and her children forsook her.

1:41. Her sanctuary was desolate like a wilderness, her festival days
were turned into mourning, her sabbaths into reproach, her honours were
brought to nothing.

1:42. Her dishonour was increased according to her glory, and her
excellency was turned into mourning.

1:43. And king Antiochus wrote to all his kingdom, that all the people
should be one:  and every one should leave his own law.

1:44. And all nations consented, according to the word of king
Antiochus.

1:45. And many of Israel consented to his service, and they sacrificed
to idols, and profaned the sabbath.

1:46. And the king sent letters by the hands of messengers to
Jerusalem, and to all the cities of Juda; that they should follow the
law of the nations of the earth.

1:47. And should forbid holocausts and sacrifices, and atonements to be
made in the temple of God.

1:48. And should prohibit the sabbath, and the festival days to be
celebrated.

1:49. And he commanded the holy places to be profaned, and the holy
people of Israel.

1:50. And he commanded altars to be built, and temples, and idols, and
swine's flesh to be immolated, and unclean beasts,

1:51. And that they should leave their children uncircumcised, and let
their souls be defiled with all uncleannesses, and abominations, to the
end that they should forget the law, and should change all the
justifications of God.

1:52. And that whosoever would not do according to the word of king
Antiochus, should be put to death.

1:53. According to all these words he wrote to his whole kingdom:  and
he appointed rulers over the people that should force them to do these
things.

1:54. And they commanded the cities of Juda to sacrifice.

1:55. Then many of the people were gathered to them that had forsaken
the law of the Lord:  and they committed evils in the land:

1:56. And they drove away the people of Israel into lurking holes, and
into the secret places of fugitives.

1:57. On the fifteenth day of the month, Casleu, in the hundred and
forty-fifth year, king Antiochus set up the abominable idol of
desolation upon the altar of God, and they built altars throughout all
the cities of Juda round about:

The abominable idol, etc. . .Viz., the statue of Jupiter Olympius.

1:58. And they burnt incense, and sacrificed at the doors of the houses
and in the streets.

1:59. And they cut in pieces, and burnt with fire the books of the law
of God:

1:60. And every one with whom the books of the testament of the Lord
were found, and whosoever observed the law of the Lord, they put to
death, according to the edict of the king.

1:61. Thus by their power did they deal with the people of Israel, that
were found in the cities month after month.

1:62. And on the five and twentieth day of the month they sacrificed
upon the altar of the idol that was over against the altar of God.

1:63. Now the women that circumcised their children were slain
according to the commandment of king Antiochus,

1:64. And they hanged the children about their neck in all their
houses:  and those that had circumcised them, they put to death.

1:65. And many of the people of Israel determined with themselves, that
they would not eat unclean things:  and they chose rather to die, than
to be defiled with unclean meats:

1:66. And they would not break the holy law of God and they were put to
death:

1:67. And there was very great wrath upon the people.



1 Machabees Chapter 2


The zeal and success of Mathathias.  His exhortation to his sons at his
death.

2:1. In those days arose Mathathias, the son of John, the son of
Simeon, a priest of the sons of Joarib, from Jerusalem, and he abode in
the mountain of Modin:

2:2. And he had five sons:  John, who was surnamed Gaddis:

2:3. And Simon, who was surnamed Thasi;

2:4. And Judas, who was called Machabeus;

2:5. And Eleazar, who was surnamed Abaron; and Jonathan, who was
surnamed Apphus.

2:6. These saw the evils that were done in the people of Juda, and in
Jerusalem.

2:7. And Mathathias said:  Woe is me, wherefore was I born to see the
ruin of my people, and the ruin of the holy city, and to dwell there,
when it is given into the hands of the enemies?

2:8. The holy places are come into the hands of strangers her temple is
become as a man without honour.

2:9. The vessels of her glory are carried away captive; her old men are
murdered in the streets, and her young men are fallen by the sword of
the enemies.

2:10. What nation hath not inherited her kingdom, and gotten of her
spoils?

2:11. All her ornaments are taken away.  She that was free is made a
slave.

2:12. And behold our sanctuary, and our beauty, and our glory is laid
waste, and the Gentiles have defiled them.

2:13. To what end then should we live any longer?

2:14. And Mathathias and his sons rent their garments, and they covered
themselves with haircloth, and made great lamentation.

2:15. And they that were sent from king Antiochus, came thither, to
compel them that were fled into the city of Modin, to sacrifice, and to
burn incense, and to depart from the law of God.

2:16. And many of the people of Israel consented and came to them:  but
Mathathias and his sons stood firm.

2:17. And they that were sent from Antiochus, answering, said to
Mathathias:  Thou art a ruler, and an honourable, and great man in this
city, and adorned with sons, and brethren.

2:18. Therefore, come thou first, and obey the king's commandment, as
all nations have done, and the men of Juda, and they that remain in
Jerusalem:  and thou, and thy sons shall be in the number of the king's
friends, and enriched with gold, and silver, and many presents.

2:19. Then Mathathias answered, and said with a loud voice:  Although all
nations obey king Antiochus, so as to depart every man from the service
of the law of his fathers, and consent to his commandments:

2:20. I and my sons, and my brethren will obey the law of our fathers.

2:21. God be merciful unto us:  it is not profitable for us to forsake
the law, and the justices of God:

2:22. We will not hearken to the words of king Antiochus, neither will
we sacrifice and transgress the commandments of our law, to go another
way.

2:23. Now as he left off speaking these words, there came a certain Jew
in the sight of all to sacrifice to the idols upon the altar in the
city of Modin, according to the king's commandment.

2:24. And Mathathias saw, and was grieved, and his reins trembled, and
his wrath was kindled according to the judgment of the law, and running
upon him he slew him upon the altar:

2:25. Moreover the man whom king Antiochus had sent, who compelled them
to sacrifice, he slew at the same time, and pulled down the altar,

2:26. And shewed zeal for the law, as Phinees did by Zamri, the son of
Salomi.

2:27. And Mathathias cried out in the city with a loud voice, saying:
Every one that hath zeal for the law, and maintaineth the testament,
let him follow me.

2:28. So he and his sons fled into the mountains, and left all that
they had in the city.

2:29. Then many that sought after judgment, and justice, went down into
the desert

2:30. And they abode there, they and their children, and their wives,
and their cattle:  because afflictions increased upon them.

2:31. And it was told to the king's men, and to the army that was in
Jerusalem, in the city of David, that certain men, who had broken the
king's commandment, were gone away into the secret places in the
wilderness, and that many were gone after them.

2:32. And forthwith they went out towards them, and made war against
them on the sabbath day.

2:33. And they said to them:  Do you still resist?  come forth, and do
according to the edict of king Antiochus, and you shall live.

2:34. And they said:  We will not come forth, neither will we obey the
king's edict, to profane the sabbath day.

2:35. And they made haste to give them battle.

2:36. But they answered them not, neither did they cast a stone at
them, nor stopped up the secret places,

2:37. Saying:  Let us all die in our innocency:  and heaven and earth
shall be witnesses for us, that you put us to death wrongfully.

2:38. So they gave them battle on the sabbath:  and they were slain,
with their wives, and their children, and their cattle, to the number
of a thousand persons.

2:39. And Mathathias and his friends heard of it, and they mourned for
them exceedingly.

2:40. And every man said to his neighbour:  If we shall all do as our
brethren have done, and not fight against the heathens for our lives,
and our justifications, they will now quickly root us out of the earth.

2:41. And they determined in that day, saying:  Whosoever shall come up
against us to fight on the sabbath day, we will fight against him:  and
we will not all die, as our brethren that were slain in the secret
places.

2:42. Then was assembled to them the congregation of the Assideans, the
stoutest of Israel, every one that had a good will for the law.

The Assideans. . .A set of men that led a religious life; and were
zealous for the law and worship of God.

2:43. And all they that fled from the evils, joined themselves to them,
and were a support to them.

2:44. And they gathered an army, and slew the sinners in their wrath,
and the wicked men in their indignation:  and the rest fled to the
nations for safety.

2:45. And Mathathias and his friends went round about, and they threw
down the altars:

2:46. And they circumcised all the children whom they found in the
confines of Israel that were uncircumcised:  and they did valiantly.

2:47. And they pursued after the children of pride, and the work
prospered in their hands:

2:48. And they recovered the law out of the hands of the nations, and
out of the hands of the kings:  and they yielded not the horn to the
sinner.

They yielded not the horn, etc. . .That is, they suffered not the power
of Antiochus, that man of sin, to abolish the law and religion of God.

2:49. Now the days drew near that Mathathias should die, and he said to
his sons:  Now hath pride and chastisement gotten strength, and the time
of destruction, and the wrath of indignation:

2:50. Now, therefore, O my sons, be ye zealous for the law, and give
your lives for the covenant of your fathers.

2:51. And call to remembrance the works of the fathers, which they have
done in their generations:  and you shall receive great glory, and an
everlasting name.

2:52. Was not Abraham found faithful in temptation, and it was reputed
to him unto justice?

2:53. Joseph, in the time of his distress, kept the commandment, and he
was made lord of Egypt.

2:54. Phinees, our father, by being fervent in the zeal of God,
received the covenant of an everlasting priesthood.

2:55. Jesus, whilst he fulfilled the word, was made ruler in Israel.

Jesus. . .That is, Josue.

2:56. Caleb, for bearing witness before the congregation, received an
inheritance.

2:57. David, by his mercy, obtained the throne of an everlasting
kingdom.

2:58. Elias, while he is full of zeal for the law, was taken up into
heaven.

2:59. Ananias and Azarias and Misael, by believing, were delivered out
of the flame.

2:60. Daniel, in his innocency, was delivered out of the mouth of the
lions.

2:61. And thus consider, through all generations:  that none that trust
in him, fail in strength.

2:62. And fear not the words of a sinful man, for his glory is dung and
worms:

2:63. Today he is lifted up, and tomorrow he shall not be found,
because he is returned into his earth and his thought is come to
nothing.

2:64. You, therefore, my sons, take courage, and behave manfully in the
law:  for by it you shall be glorious.

2:65. And behold, I know that your brother Simon is a man of counsel:
give ear to him always, and he shall be a father to you.

2:66. And Judas Machabeus, who is valiant and strong from his youth up,
let him be the leader of your army, and he shall manage the war of the
people.

2:67. And you shall take to you all that observe the law:  and revenge
ye the wrong of your people.

2:68. Render to the Gentiles their reward, and take heed to the
precepts of the law.

2:69. And he blessed them, and was joined to his fathers.

2:70. And he died in the hundred and forty-sixth year:  and he was
buried by his sons in the sepulchres of his fathers, in Modin, and all
Israel mourned for him with great mourning.



1 Machabees Chapter 3


Judas Machabeus succeeds his father, and overthrows Apollonius and
Seron.  A great army is sent against him out of Syria.  He prepares his
people for battle by fasting and prayer.

3:1. Then his son Judas, called Machabeus, rose up in his stead.

3:2. And all his brethren helped him, and all they that had joined
themselves to his father, and they fought with cheerfulness the battle
of Israel.

3:3. And he got his people great honour, and put on a breastplate as a
giant, and girt his warlike armour about him in battles, and protected
the camp with his sword.

3:4. In his acts he was like a lion, and like a lion's whelp roaring
for his prey.

3:5. And he pursued the wicked and sought them out, and them that
troubled his people he burnt with fire:

3:6. And his enemies were driven away for fear of him, and all the
workers of iniquity were troubled:  and salvation prospered in his hand.

3:7. And he grieved many kings, and made Jacob glad with his works, and
his memory is blessed for ever.

3:8. And he went through the cities of Juda, and destroyed the wicked
out of them, and turned away wrath from Israel.

3:9. And he was renowned even to the utmost part of the earth, and he
gathered them that were perishing.

3:10. And Apollonius gathered together the Gentiles, and a numerous and
great army from Samaria, to make war against Israel.

3:11. And Judas understood it, and went forth to meet him:  and he
overthrew him, and killed him:  and many fell down slain, and the rest
fled away.

3:12. And he took their spoils, and Judas took the sword of Apollonius,
and fought with it all his lifetime.

3:13. And Seron, captain of the army of Syria, heard that Judas had
assembled a company of the faithful, and a congregation with him,

3:14. And he said I will get me a name, and will be glorified in the
kingdom, and will overthrow Judas, and those that are with him, that
have despised the edict of the king.

3:15. And he made himself ready; and the host of the wicked went up
with him, strong succours, to be revenged of the children of Israel.

3:16. And they approached even as far as Bethoron:  and Judas went forth
to meet him, with a small company.

3:17. But when they saw the army coming to meet them, they said to
Judas:  How shall we, being few, be able to fight against so great a
multitude, and so strong, and we are ready to faint with fasting today?

3:18. And Judas said:  It is an easy matter for many to be shut up in
the hands of a few:  and there is no difference in the sight of the God
of heaven to deliver with a great multitude, or with a small company:

3:19. For the success of war is not in the multitude of the army, but
strength cometh from heaven.

3:20. They come against us with an insolent multitude, and with pride,
to destroy us, and our wives, and our children, and to take our spoils.

3:21. But we will fight for our lives, and our laws:

3:22. And the Lord himself will overthrow them before our face, but as
for you, fear them not

3:23. And as soon as he had made an end of speaking, he rushed suddenly
upon them:  and Seron, and his host were overthrown before him:

3:24. And he pursued him by the descent of Bethoron, even to the plain,
and there fell of them eight hundred men, and the rest fled into the
land of the Philistines.

3:25. And the fear of Judas, and of his brethren, and the dread of
them, fell upon all the nations round about them.

3:26. And his fame came to the king, and all nations told of the
battles of Judas.

3:27. Now when king Antiochus heard these words, he was angry in his
mind:  and he sent, and gathered the forces of all his kingdom, an
exceeding strong army.

3:28. And he opened his treasury, and gave out pay to the army for a
year:  and he commanded them, that they should be ready for all things.

3:29. And he perceived that the money of his treasures failed, and that
the tributes of the country were small, because of the dissension, and
the evil that he had brought upon the land, that he might take away the
laws of old times:

3:30. And he feared that he should not have as formerly enough for
charges and gifts, which he had given before with a liberal hand:  for
he had abounded more than the kings that had been before him.

3:31. And he was greatly perplexed in mind, and purposed to go into
Persia, and to take tributes of the countries, and to gather much
money.

3:32. And he left Lysias, a nobleman of the blood royal to oversee the
affairs of the kingdom from the river Euphrates even to the river of
Egypt:

3:33. And to bring up his son, Antiochus, till he came again.

3:34. And he delivered to him half the army, and the elephants:  and he
gave him charge concerning all that he would have done, and concerning
the inhabitants of Judea, and Jerusalem.

3:35. And that he should send an army against them to destroy and root
out the strength of Israel, and the remnant of Jerusalem, and to take
away the memory of them from that place.

3:36. And that he should settle strangers, to dwell in all their
coasts, and divide their land by lot.

3:37. So the king took the half of the army that remained, and went
forth from Antioch, the chief city of his kingdom, in the hundred and
forty-seventh year:  and he passed over the river Euphrates, and went
through the higher countries.

3:38. Then Lysias chose Ptolemee, the son of Dorymenus, and Nicanor,
and Gorgias, mighty men of the king's friends.

3:39. And he sent with them forty thousand men, and seven thousand
horsemen:  to go into the land of Juda, and to destroy it, according to
the king's orders.

3:40. So they went forth with all their power, and came, and pitched
near Emmaus, in the plain country.

3:41. And the merchants of the countries heard the fame of them:  and
they took silver and gold in abundance, and servants:  and they came
into the camp, to buy the children of Israel for slaves:  and there were
joined to them the forces of Syria, and of the land of the strangers.

3:42. And Judas, and his brethren, saw that evils were multiplied, and
that the armies approached to their borders:  and they knew the orders
the king had given to destroy the people, and utterly abolish them.

3:43. And they said, every man to his neighbour:  Let us raise up the
low condition of our people, and let us fight for our people, and our
sanctuary.

3:44. And the assembly was gathered, that they might be ready for
battle, and that they might pray, and ask mercy and compassion.

3:45. Now Jerusalem was not inhabited, but was like a desert:  there was
none of her children that went in or out:  and the sanctuary was trodden
down:  and the children of strangers were in the castle, there was the
habitation of the Gentiles:  and joy was taken away from Jacob, and the
pipe and harp ceased there.

3:46. And they assembled together, and came to Maspha, over against
Jerusalem:  for in Maspha was a place of prayer heretofore in Israel.

3:47. And they fasted that day, and put on haircloth, and put ashes
upon their heads:  and they rent their garments:

3:48. And they laid open the books of the law, in which the Gentiles
searched for the likeness of their idols:

3:49. And they brought the priestly ornaments, and the first fruits and
tithes, and stirred up the Nazarites that had fulfilled their days:

3:50. And they cried with a loud voice toward heaven, saying:  What
shall we do with these, and whither shall we carry them?

3:51. For thy holies are trodden down, and are profaned, and thy
priests are in mourning, and are brought low.

3:52. And behold the nations are come together against us, to destroy
us:  thou knowest what they intend against us.

3:53. How shall we be able to stand before their face, unless thou, O
God, help us?

3:64. Then they sounded with trumpets, and cried out with a loud voice.

3:66. And after this, Judas appointed captains over the people, over
thousands, and over hundreds, and over fifties, and over tens.

3:66. And he said to them that were building houses, or had betrothed
wives, or were planting vineyards, or were fearful, that they should
return every man to his house, according to the law.

3:67. So they removed the camp, and pitched on the south side of
Emmaus.

3:68. And Judas said:  Gird yourselves, and be valiant men, and be ready
against the morning, that you may fight with these nations that are
assembled against us to destroy us and our sanctuary.

3:59. For it is better for us to die in battle, than to see the evils
of our nation, and of the holies:

3:60. Nevertheless, as it shall be the will of God in heaven, so be it
done.



1 Machabees Chapter 4


Judas routs the king's army.  Gorgias flies before him.  Lysias comes
against him with a great army, but is defeated.  Judas cleanses the
temple, sets up a new altar, and fortifies the sanctuary.

4:1. Then Gorgias took five thousand men, and a thousand of the best
horsemen; and they removed out of the camp by night.

4:2. That they might come upon the camp of the Jews and strike them
suddenly:  and the men that were of the castle were their guides.

4:3. And Judas heard of it, and rose up, he and the valiant men, to
attack the king's forces that were in Emmaus.

4:4. For as yet the army was dispersed from the camp

The army was dispersed. . .That is, in different divisions, not
altogether encamped.

4:5. And Gorgias came by night into the camp of Judas, and found no
man; and he sought them in the mountains:  for he said:  These men flee
from us.

4:6. And when it was day, Judas shewed himself in the plain with three
thousand men only, who neither had armour nor swords:

Who neither had armour nor swords. . .Such as they wished for.

4:7. And they saw the camp of the Gentiles that it was strong, and the
men in breastplates, and the horsemen round about them, and these were
trained up to war.

4:8. And Judas said to the men that were with him:  Fear ye not their
multitude, neither be ye afraid of their assault.

4:9. Remember in what manner our fathers were saved in the Red Sea,
when Pharaoh pursued them with a great army.

4:10. And now let us cry to heaven, and the Lord will have mercy on us,
and will remember the covenant of our fathers, and will destroy this
army before our face this day:

4:11. And all nations shall know that there is one that redeemeth and
delivereth Israel.

4:12. And the strangers lifted up their eyes, and saw them coming
against them.

4:13. And they went out of the camp to battle, and they that were with
Judas sounded the trumpet.

4:14. And they joined battle:  and the Gentiles were routed, and fled
into the plain.

4:15. But all the hindmost of them fell by the sword and they pursued
them as far as Gezeron, and even to the plains of Idumea, and of
Azotus, and of Jamnia:  and there fell of them to the number of three
thousand men.

4:16. And Judas returned again with his army that followed him.

4:17. And he said to the people:  Be not greedy of the spoils; for there
is war before us:

4:18. And Gorgias and his army are near us in the mountain:  but stand
ye now against our enemies, and overthrow them, and you shall take the
spoils afterwards with safety.

4:19. And as Judas was speaking these words, behold part of them
appeared, looking forth from the mountain.

4:20. And Gorgias saw that his men were put to flight, and that they
had set fire to the camp:  for the smoke that was seen declared what was
done.

4:21. And when they had seen this, they were seized with great fear,
seeing at the same time Judas and his army in the plain ready to fight.

4:22. So they all fled away into the land of the strangers.

4:23. And Judas returned to take the spoils of the camp, and they got
much gold, and silver, and blue silk, and purple of the sea, and great
riches.

4:24. And returning home, they sung a hymn, and blessed God in heaven,
because he is good, because his mercy endureth for ever.

4:25. So Israel had a great deliverance that day.

4:26. And such of the strangers as escaped, went and told Lysias all
that had happened.

4:27. And when he heard these things, he was amazed and discouraged:
because things had not succeeded in Israel according to his mind, and
as the king had commanded.

4:28. So the year following, Lysias gathered together threescore
thousand chosen men, and five thousand horsemen, that he might subdue
them.

4:29. And they came into Judea, and pitched their tents in Bethoron,
and Judas met them with ten thousand men.

4:30. And they saw that the army was strong, and he prayed and said:
Blessed art thou, O Saviour of Israel, who didst break the violence of
the mighty by the hand of thy servant David, and didst deliver up the
camp of the strangers into the hands of Jonathan the son of Saul, and
of his armour bearer.

4:31. Shut up this army in the hands of thy people Israel, and let them
be confounded in their host and their horsemen.

4:32. Strike them with fear, and cause the boldness of their strength to
languish, and let them quake at their own destruction.

4:33. Cast them down with the sword of them that love thee:  and let all
that know thy name praise thee with hymns.

4:34. And they joined battle:  and there fell of the army of Lysias five
thousand men.

4:35. And when Lysias saw that his men were put to flight, and how bold
the Jews were, and that they were ready either to live, or to die
manfully, he went to Antioch, and chose soldiers, that they might come
again into Judea with greater numbers.

4:36. Then Judas, and his brethren said:  Behold our enemies are
discomfited:  let us go up now to cleanse the holy places, and to repair
them.

4:37. And all the army assembled together, and they went up into Mount
Sion.

4:38. And they saw the sanctuary desolate, and the altar profaned, and
the gates burnt, and shrubs growing up in the courts as in a forest, or
on the mountains, and the chambers joining to the temple thrown down.

4:39. And they rent their garments, and made great lamentation, and put
ashes on their heads:

4:40. And they fell down to the ground on their faces, and they sounded
with the trumpets of alarm, and they cried towards heaven.

4:41. Then Judas appointed men to fight against them that were in the
castle, till they had cleansed the holy places,

4:42. And he chose priests without blemish, whose will was set upon the
law of God.

4:43. And they cleansed the holy places, and took away the stones that
had been defiled into an unclean place.

4:44. And he considered about the altar of holocausts that had been
profaned, what he should do with it.

4:45. And a good counsel came into their minds, to pull it down:  lest
it should be a reproach to them, because the Gentiles had defiled it;
so they threw it down.

4:46. And they laid up the stones in the mountain of the temple, in a
convenient place, till there should come a prophet, and give answer
concerning them.

4:47. Then they took whole stones, according to the law and built a new
altar, according to the former:

4:48. And they built up the holy places, and the things that were
within the temple:  and they sanctified the temple and the courts.

4:49. And they made new holy vessels, and brought in the candlestick,
and the altar of incense, and the table, into the temple.

4:50. And they put incense upon the altar, and lighted up the lamps
that were upon the candlestick, and they gave light in the temple.

4:51. And they set the loaves upon the table, and hung up the veils,
and finished all the works that they had begun to make.

4:52. And they arose before the morning on the five and twentieth day
of the ninth month, (which is the month of Casleu) in the hundred and
forty-eighth year.

4:53. And they offered sacrifice, according to the law, upon the new
altar of holocausts which they had made.

4:54. According to the time, and according to the day wherein the
heathens had defiled it, in the same was it dedicated anew with
canticles, and harps, and lutes, and cymbals.

4:55. And all the people fell upon their faces, and adored, and blessed
up to heaven, him that had prospered them.

4:56. And they kept the dedication of the altar eight days, and they
offered holocausts with joy, and sacrifices of salvation, and of
praise.

4:57. And they adorned the front of the temple with crowns of gold, and
escutcheons, and they renewed the gates, and the chambers, and hanged
doors upon them.

4:58. And there was exceeding great joy among the people, and the
reproach of the Gentiles was turned away.

4:59. And Judas, and his brethren, and all the church of Israel
decreed, that the day of the dedication of the altar should be kept in
its season from year to year for eight days, from the five and
twentieth day of the month of Casleu, with joy and gladness.

4:60. They built up also at that time Mount Sion, with high walls, and
strong towers round about, lest the Gentiles should at any time come,
and tread it down, as they did before.

4:61. And he placed a garrison there, to keep it, and he fortified it,
to secure Bethsura, that the people might have a defence against
Idumea.



1 Machabees Chapter 5


Judas and his brethren attack the enemies of their country, and deliver
them that were distressed.  Josephus and Azarius, attempting contrary to
order to fight against their enemies, are defeated.

5:1. Now it came to pass, when the nations round about heard that the
altar and the sanctuary were built up, as before, that they were
exceeding angry.

5:2. And they thought to destroy the generation of Jacob that were
among them, and they began to kill some of the people, and to persecute
them.

5:3. Then Judas fought against the children of Esau in Idumea, and them
that were in Acrabathane:  because they beset the Israelites round
about, and he made a great slaughter of them.

5:4. And he remembered the malice of the children of Bean:  who were a
snare and a stumblingblock to the people, by lying in wait for them in
the way.

5:5. And they were shut up by him in towers, and he set upon them, and
devoted them to utter destruction, and burnt their towers with fire,
and all that were in them.

5:6. Then he passed over to the children of Ammon, where he found a
mighty power, and much people, and Timotheus was their captain:

5:7. And he fought many battles with them, and they were discomfited in
their sight, and he smote them:

5:8. And he took the city of Gazer and her towns, and returned into
Judea.

5:9. And the Gentiles that were in Galaad, assembled themselves
together against the Israelites that were in their quarters, to destroy
them:  and they fled into the fortress of Datheman.

5:10. And they sent letters to Judas, and his brethren, saying:  The
heathens that are round about are gathered together against us to
destroy us:

5:11. And they are preparing to come, and to take the fortress into
which we are fled:  and Timotheus is the captain of their host.

5:12. Now therefore come, and deliver us out of their hands, for many
of us are slain.

5:13. And all our brethren that were in the places of Tubin, are
killed:  and they have carried away their wives, and their children,
captives, and taken their spoils, and they have slain there almost a
thousand men.

5:14. And while they were yet reading these letters, behold there came
other messengers out of Galilee with their garments rent, who related
according to these words:

5:15. Saying, that they of Ptolemais, and of Tyre, and of Sidon, were
assembled against them, and all Galilee is filled with strangers, in
order to consume us.

5:16. Now when Judas and the people heard these words, a great assembly
met together to consider what they should do for their brethren that
were in trouble, and were assaulted by them.

5:17. And Judas said to Simon, his brother:  Choose thee men, and go,
and deliver thy brethren in Galilee:  and I, and my brother Jonathan,
will go into the country of Galaad:

5:18. And he left Joseph, the son of Zacharias, and Azarias, captains
of the people, with the remnant of the army in Judea, to keep it:

5:19. And he commanded them, saying:  Take ye the charge of this people;
but make no war against the heathens, till we return.

5:20. Now three thousand men were allotted to Simon, to go into
Galilee:  and eight thousand to Judas, to go into the land of Galaad.

5:21. And Simon went into Galilee, and fought many battles with the
heathens:  and the heathens were discomfited before his face, and he
pursued them even to the gate of Ptolemais.

5:22. And there fell of the heathens almost three thousand men, and he
took the spoils of them.

5:23. And he took with him those that were in Galilee and in Arbatis,
with their wives, and children, and all that they had, and he brought
them into Judea with great joy.

5:24. And Judas Machabeus, and Jonathan, his brother, passed over the
Jordan, and went three days' journey through the desert.

5:25. And the Nabutheans met them, and received them in a peaceable
manner, and told them all that happened to their brethren in the land
of Galaad,

5:26. And that many of them were shut up in Barasa, and in Bosor, and
in Alima, and in Casphor, and in Mageth, and in Carnaim; all these
strong and great cities.

5:27. Yea, and that they were kept shut up in the rest of the cities of
Galaad, and that they had appointed to bring their army on the morrow
near to these cities, and to take them, and to destroy them all in one
day.

5:28. Then Judas and his army suddenly turned their march into the
desert, to Bosor, and took the city:  and he slew every male by the edge
of the sword, and took all their spoils, and burnt it with fire.

5:29. And they removed from thence by night, and went till they came to
the fortress.

5:30. And it came to pass that early in the morning, when they lifted
up their eyes, behold there were people without number, carrying
ladders and engines to take the fortress, and assault them.

5:31. And Judas saw that the fight was begun, and the cry of the battle
went up to heaven like a trumpet, and a great cry out of the city:

5:32. And he said to his host:  Fight ye today for your brethren.

5:33. And he came with three companies behind them, and they sounded
their trumpets, and cried out in prayer.

5:34. And the host of Timotheus understood that it was Machabeus, and
they fled away before his face and they made a great slaughter of them,
and there fell of them in that day almost eight thousand men.

5:35. And Judas turned aside to Maspha, and assaulted, and took it, and
he slew every male thereof, and took the spoils thereof, and burnt it
with fire.

5:36. From thence he marched, and took Casbon, and Mageth, and Bosor,
and the rest of the cities of Galaad.

5:37. But after this Timotheus gathered another army, and camped over
against Raphon, beyond the torrent.

5:38. And Judas sent men to view the army:  and they brought him word,
saying:  All the nations, that are round about us, are assembled unto
him an army exceeding great:

5:39. And they have hired the Arabians to help them, and they have
pitched their tents beyond the torrent, ready to come to fight against
thee.  And Judas went to meet them.

5:40. And Timotheus said to the captains of his army:  When Judas and
his army come near the torrent of water, if he pass over unto us first,
we shall not be able to withstand him:  for he will certainly prevail
over us.

5:41. But if he be afraid to pass over, and camp on the other side of
the river, we will pass over to them, and shall prevail against him.

5:42. Now when Judas came near the torrent of water, he set the scribes
of the people by the torrent, and commanded them, saying:  Suffer no man
to stay behind:  but let all come to the battle.

5:43. And he passed over to them first, and all the people after him,
and all the heathens were discomfited before them, and they threw away
their weapons, and fled to the temple that was in Carnaim.

5:44. And he took that city, and the temple he burnt with fire, with
all things that were therein:  and Carnaim was subdued, and could not
stand against the face of Judas.

5:45. And Judas gathered together all the Israelites that were in the
land of Galaad, from the least even to the greatest, and their wives
and children, and an army exceeding great, to come into the land of
Juda.

5:46. And they came as far as Ephron:  now this was a great city,
situate in the way, strongly fortified, and there was no means to turn
from it on the right hand or on the left, but the way was through the
midst of it.

5:47. And they that were in the city shut themselves in, and stopped up
the gates with stones:  and Judas sent to them with peaceable words,

5:48. Saying:  Let us pass through your land, to go into our own
country, and no man shall hurt you; we will only pass through on foot.
But they would not open to them.

5:49. Then Judas commanded proclamation to be made in the camp, that
they should make an assault, every man in the place where he was.

5:50. And the men of the army drew near, and he assaulted that city all
the day, and all the night; and the city was delivered into his hands:

5:51. And they slew every male with the edge of the sword, and he razed
the city, and took the spoils thereof, and passed through all the city
over them that were slain.

5:52. Then they passed over the Jordan to the great plain that is over
against Bethsan.

5:53. And Judas gathered together the hindmost, and he exhorted the
people, all the way through, till they came into the land of Juda.

5:54. And they went up to mount Sion with joy and gladness, and offered
holocausts, because not one of them was slain, till they had returned
in peace.

5:55. Now in the days that Judas and Jonathan were in the land of
Galaad, and Simon his brother in Galilee, before Ptolemais,

5:56. Joseph, the son of Zacharias, and Azarias, captain of the
soldiers, heard of the good success, and the battles that were fought,

5:57. And he said:  Let us also get us a name, and let us go fight
against the Gentiles that are round about us.

5:58. And he gave charge to them that were in his army, and they went
towards Jamnia.

5:59. And Gorgias and his men went out of the city, to give them
battle.

5:60. And Joseph and Azarias were put to flight, and were pursued unto
the borders of Judea:  and there fell on that day, of the people of
Israel, about two thousand men, and there was a great overthrow of the
people:

5:61. Because they did not hearken to Judas and his brethren, thinking
that they should do manfully.

5:62. But they were not of the seed of those men by whom salvation was
brought to Israel.

5:63. And the men of Juda were magnified exceedingly in the sight of
all Israel, and of all the nations where their name was heard.

5:64. And the people assembled to them with joyful acclamations.

5:65. Then Judas and his brethren went forth and attacked the children
of Esau, in the land towards the south, and he took Chebron and her
towns:  and he burnt the walls thereof, and the towers all round it.

5:66. And he removed his camp to go into the land of the aliens, and he
went through Samaria.

5:67. In that day some priests fell in battle, while desiring to do
manfully they went out unadvisedly to fight.

5:68. And Judas turned to Azotus, into the land of the strangers, and
he threw down their altars, and he burnt the statues of their gods with
fire:  and he took the spoils of the cities, and returned into the land
of Juda.



1 Machabees Chapter 6


The fruitless repentance and death of Antiochus.  His son comes against
Judas with a formidable army.  He besieges Sion:  but at last makes peace
with the Jews.

6:1. Now king Antiochus was going through the higher countries, and he
heard that the city of Elymais in Persia, was greatly renowned, and
abounding in silver and gold,

6:2. And that there was in it a temple exceeding rich; and coverings of
gold, and breastplates, and shields, which king Alexander, son of
Philip, the Macedonian, that reigned first in Greece, had left there.

6:3. So he came, and sought to take the city and to pillage it; but he
was not able, because the design was known to them that were in the
city.

6:4. And they rose up against him in battle, and he fled away from
thence, and departed with great sadness, and returned towards
Babylonia.

6:5. And whilst he was in Persia there came one that told him how the
armies that were in the land of Juda were put to flight:

6:6. And that Lysias went with a very great power, and was put to
flight before the face of the Jews, and that they were grown strong by
the armour, and power, and store of spoils which they had gotten out of
the camps which they had destroyed:

6:7. And that they had thrown down the abomination which he had set up
upon the altar in Jerusalem, and that they had compassed about the
sanctuary with high walls as before, and Bethsura also, his city.

6:8. And it came to pass, when the king heard these words, that he was
struck with fear, and exceedingly moved:  and he laid himself down upon
his bed, and fell sick for grief, because it had not fallen out to him
as he imagined.

6:9. And he remained there many days:  for great grief came more and
more upon him, and he made account that he should die.

6:10. And he called for all his friends, and said to them:  Sleep is
gone from my eyes, and I am fallen away, and my heart is cast down for
anxiety:

6:11. And I said in my heart:  Into how much tribulation am I come, and
into what floods of sorrow wherein now I am:  I that was pleasant and
beloved in my power!

6:12. But now I remember the evils that I did in Jerusalem, from whence
also I took away all the spoils of gold, and of silver, that were in
it, and I sent to destroy the inhabitants of Juda without cause.

6:13. I know, therefore, that for this cause these evils have found me:
and behold I perish with great grief in a strange land.

6:14. Then he called Philip, one of his friends, and he made him regent
over all his kingdom.

6:15. And he gave him the crown, and his robe, and his ring, that he
should go to Antiochus, his son, and should bring him up for the
kingdom.

6:16. So king Antiochus died there in the year one hundred and
forty-nine.

6:17. And Lysias understood that the king was dead, and he set up
Antiochus, his son, to reign, whom he had brought up young:  and he
called his name Eupator.

6:18. Now they that were in the castle, had shut up the Israelites
round about the holy places:  and they were continually seeking their
hurt, and to strengthen the Gentiles.

6:19. And Judas purposed to destroy them:  and he called together all
the people, to besiege them.

6:20. And they came together, and besieged them in the year one hundred
and fifty, and they made battering slings and engines.

6:21. And some of the besieged got out:  and some wicked men of Israel
joined themselves unto them.

6:22. And they went to the king, and said:  How long dost thou delay to
execute judgment, and to revenge our brethren?

6:23. We determined to serve thy father, and to do according to his
orders, and obey his edicts:

6:24. And for this they of our nation are alienated from us, and have
slain as many of us as they could find, and have spoiled our
inheritances.

6:25. Neither have they put forth their hand against us only, but also
against all our borders.

6:26. And behold they have approached this day to the castle of
Jerusalem to take it, and they have fortified the strong hold of
Bethsura:

6:27. And unless thou speedily prevent them, they will do greater
things than these, and thou shalt not be able to subdue them.

6:28. Now when the king heard this, he was angry:  and he called
together all his friends, and the captains of his army, and them that
were over the horsemen.

6:29. There came also to him from other realms, and from the islands of
the sea, hired troops.

6:30. And the number of his army was an hundred thousand footmen, and
twenty thousand horsemen, and thirty-two elephants trained to battle.

6:31. And they went through Idumea, and approached to Bethsura, and
fought many days, and they made engines:  but they sallied forth, and
burnt them with fire, and fought manfully.

But they sallied forth. . .That is, the citizens of Bethsura sallied
forth and burnt them, that is, burnt the engines of the besiegers.

6:32. And Judas departed from the castle, and removed the camp to
Bethzacharam, over against the king's camp.

6:33. And the king rose before it was light, and made his troops march
on fiercely towards the way of Bethzacharam:  and the armies made
themselves ready for the battle, and they sounded the trumpets:

6:34. And they shewed the elephants the blood of grapes, and
mulberries, to provoke them to fight.

6:35. And they distributed the beasts by the legions:  and there stood
by every elephant a thousand men in coats of mail, and with helmets of
brass on their heads:  and five hundred horsemen set in order were
chosen for every beast.

6:36. These before the time wheresoever the beast was they were there:
and whithersoever it went, they went, and they departed not from it.

These before the time. . .That is, these were ready for every occasion.

6:37. And upon the beast, there were strong wooden towers which covered
every one of them:  and engines upon them, and upon every one thirty-two
valiant men, who fought from above:  and an Indian to rule the beast.

6:38. And the rest of the horsemen he placed on this side and on that
side, at the two wings, with trumpets to stir up the army, and to
hasten them forward that stood thick together in the legions thereof.

6:39. Now when the sun shone upon the shields of gold, and of brass,
the mountains glittered therewith, and they shone like lamps of fire.

6:40. And part of the king's army was distinguished by the high
mountains, and the other part by the low places:  and they marched on
warily and orderly.

6:41. And all the inhabitants of the land were moved at the noise of
their multitude, and the marching of the company, and the rattling of
the armour, for the army was exceeding great and strong.

6:42. And Judas and his army drew near for battle:  and there fell of
the king's army six hundred men.

6:43. And Eleazar, the son of Saura, saw one of the beasts harnessed
with the king's harness:  and it was higher than the other beasts; and
it seemed to him that the king was on it:

6:44. And he exposed himself to deliver his people, and to get himself
an everlasting name.

6:45. And he ran up to it boldly in the midst of the legion, killing on
the right hand, and on the left, and they fell by him on this side and
that side.

6:46. And he went between the feet of the elephant, and put himself
under it:  and slew it, and it fell to the ground upon him, and he died
there.

6:47. Then they seeing the strength of the king and the fierceness of
his army, turned away from them.

6:48. But the king's army went up against them to Jerusalem:  and the
king's army pitched their tents against Judea and Mount Sion.

6:49. And he made peace with them that were in Bethsura:  and they came
forth out of the city, because they had no victuals, being shut up
there, for it was the year of rest to the land.

6:50. And the king took Bethsura:  and he placed there a garrison to
keep it.

6:51. And he turned his army against the sanctuary for many days:  and
he set up there battering slings, and engines, and instruments to cast
fire, and engines to cast stones and javelins, and pieces to shoot
arrows, and slings.

6:52. And they also made engines against their engines, and they fought
for many days.

6:53. But there were no victuals in the city, because it was the
seventh year:  and such as had stayed in Judea of them that came from
among the nations, had eaten the residue of all that which had been
stored up.

6:54. And there remained in the holy places but a few, for the famine
had prevailed over them:  and they were dispersed every man to his own
place.

6:55. Now Lysias heard that Philip; whom king Antiochus while he lived
had appointed to bring up his son, Antiochus, and to reign,

6:56. Was returned from Persia, and Media, with the army that went with
him and that he sought to take upon him the affairs of the kingdom:

6:57. Wherefore he made haste to go, and say to the king and to the
captains of the army:  We decay daily, and our provision of victuals is
small, and the place that we lay siege to is strong, and it lieth upon
us to take order for the affairs of the kingdom.

6:58. Now, therefore, let us come to an agreement with these men, and
make peace with them and with all their nation.

6:59. And let us covenant with them, that they may live according to
their own laws, as before.  For because of our despising their laws,
they have been provoked, and have done all these things.

6:60. And the proposal was acceptable in the sight of the king, and of
the princes:  and he sent to them to make peace:  and they accepted of
it.

6:61. And the king and the princes swore to them:  and they came out of
the strong hold.

6:62. Then the king entered into Mount Sion, and saw the strength of
the place:  and he quickly broke the oath that he had taken, and gave
commandment to throw down the wall round about.

6:63. And he departed in haste and returned to Antioch, where he found
Philip master of the city:  and he fought against him, and took the
city.



1 Machabees Chapter 7


Demetrius is made king, and sends Bacchides and Alcimus the priest into
Judea, and after them Nicanor, who is slain by Judas with all his army.

7:1. In the hundred and fifty-first year, Demetrius, the son of
Seleucus, departed from the city of Rome, and came up with few men into
a city of the sea coast, and reigned there.

7:2. And it came to pass as he entered into the house of the kingdom of
his fathers, that the army seized upon Antiochus, and Lysias, to bring
them unto him.

7:3. And when he knew it, he said:  Let me not see their face.

7:4. So the army slew them.  And Demetrius sat upon the throne of his
kingdom:

7:5. And there came to him the wicked and ungodly men of Israel:  and
Alcimus was at the head of them, who desired to be made high priest.

7:6. And they accused the people to the king, saying:  Judas and his
brethren have destroyed all thy friends, and he hath driven us out of
our land.

7:7. Now, therefore, send some men whom thou trustest, and let him go,
and see all the havoc he hath made amongst us, and in the king's lands:
and let him punish all his friends and their helpers.

7:8. Then the king chose Bacchides, one of his friends, that ruled
beyond the great river in the kingdom, and was faithful to the king:
and he sent him,

7:9. To see the havoc that Judas had made:  and the wicked Alcimus he
made high priest, and commanded him to take revenge upon the children
of Israel.

7:10. And they arose, and came with a great army into the land of Juda:
and they sent messengers, and spoke to Judas and his brethren with
peaceable words, deceitfully.

7:11. But they gave no heed to their words:  for they saw that they were
come with a great army.

7:12. Then there assembled to Alcimus and Bacchides a company of the
scribes, to require things that are just:

7:13. And first the Assideans, that were among the children of Israel,
and they sought peace of them.

7:14. For they said:  One that is a priest of the seed of Aaron is come,
he will not deceive us.

7:15. And he spoke to them peaceably:  and he swore to them, saying:  We
will do you no harm, nor your friends.

7:16. And they believed him.  And he took threescore of them, and slew
them in one day, according to the word that is written:

7:17. The flesh of thy saints, and the blood of them they have shed round
about Jerusalem, and there was none to bury them.

7:18. Then fear and trembling fell upon all the people:  for they said:
There is no truth, nor justice among them:  for they have broken the
covenant, and the oath which they made.

7:19. And Bacchides removed the camp from Jerusalem, and pitched in
Bethzecha:  and he sent, and took many of them that were fled away from
him, and some of the people he killed, and threw them into a great pit.

7:20. Then he committed the country to Alcimus, and left with him
troops to help him.  So Bacchides went away to the king.

7:21. But Alcimus did what he could to maintain his chief priesthood.

7:22. And they that disturbed the people resorted to him, and they got
the land of Juda into their power, and did much hurt in Israel.

7:23. And Judas saw all the evils that Alcimus, and they that were with
him, did to the children of Israel, much more than the Gentiles.

7:24. And he went out into all the coasts of Judea round about, and
took vengeance upon the men that had revolted, and they ceased to go
forth any more into the country.

7:25. And Alcimus saw that Judas and they that were with him,
prevailed:  and he knew that he could not stand against them, and he
went back to the king, and accused them of many crimes.

7:26. And the king sent Nicanor, one of his principal lords, who was a
great enemy to Israel:  and he commanded him to destroy the people.

7:27. And Nicanor came to Jerusalem with a great army, and he sent to
Judas and to his brethren deceitfully, with friendly words,

7:28. Saying:  Let there be no fighting between me and you:  I will come
with a few men, to see your faces with peace.

7:29. And he came to Judas, and they saluted one another peaceably:  and
the enemies were prepared to take away Judas by force.

7:30. And the thing was known to Judas that he was come to him with
deceit:  and he was much afraid of him, and would not see his face any
more.

7:31. And Nicanor knew that his counsel was discovered:  and he went out
to fight against Judas, near Capharsalama.

7:32. And there fell of Nicanor's army almost five thousand men, and
they fled into the city of David.

7:33. And after this Nicanor went up into mount Sion:  and some of the
priests and the people came out to salute him peaceably, and to shew
him the holocausts that were offered for the king.

7:34. But he mocked and despised them, and abused them:  and he spoke
proudly,

7:35. And swore in anger, saying:  Unless Judas and his army be
delivered into my hands, as soon as ever I return in peace, I will burn
this house.  And he went out in a great rage.

7:36. And the priests went in, and stood before the face of the altar
and the temple:  and weeping, they said:

7:37. Thou, O Lord, hast chosen this house for thy name to be called
upon therein, that it might be a house of prayer and supplication for
thy people.

7:38. Be avenged of this man, and his army, and let them fall by the
sword:  remember their blasphemies, and suffer them not to continue any
longer.

7:39. Then Nicanor went out from Jerusalem, and encamped near to
Bethoron:  and an army of Syria joined him.

7:40. But Judas pitched in Adarsa with three thousand men:  and Judas
prayed, and said:

7:41. O Lord, when they that were sent by king Sennacherib blasphemed
thee, an angel went out, and slew of them a hundred and eighty-five
thousand:

7:42. Even so destroy this army in our sight today and let the rest
know that he hath spoken ill against thy sanctuary:  and judge thou him
according to his wickedness.

7:43. And the armies joined battle on the thirteenth day of the month,
Adar:  and the army of Nicanor was defeated, and he himself was first
slain in the battle.

7:44. And when his army saw that Nicanor was slain they threw away
their weapons, and fled:

7:45. And they pursued after them one day's journey from Adazer, even
till ye come to Gazara, and they sounded the trumpets after them with
signals.

7:46. And they went forth out of all the towns of Judea round about,
and they pushed them with the horns, and they turned again to them, and
they were all slain with the sword, and there was not left of them so
much as one.

7:47. And they took the spoils of them for a booty, and they cut off
Nicanor's head, and his right hand, which he had proudly stretched out,
and they brought it, and hung it up over against Jerusalem.

7:48. And the people rejoiced exceedingly, and they spent that day with
great joy.

7:49. And he ordained that this day should be kept every year, being
the thirteenth of the month of Adar

7:50. And the land of Juda was quiet for a short time.



1 Machabees Chapter 8


Judas hears of the great character of the Romans:  he makes a league
with them.

8:1. Now Judas heard of the fame of the Romans, that they are powerful
and strong, and willingly agree to all things that are requested of
them:  and that whosoever have come to them, they have made amity with
them, and that they are mighty in power.

8:2. And they heard of their battles, and their noble acts which they
had done in Galatia, how they had conquered them, and brought them
under tribute:

They heard, etc. . .What is here set down of the history and character
of the ancient Romans, is not an assertion, or affirmation of the
sacred writer:  but only a relation of what Judas had heard of them.

8:3. And how great things they had done in the land of Spain, and that
they had brought under their power the mines of silver and of gold that
are there, and had gotten possession of all the place by their counsel
and patience:

8:4. And had conquered places that were very far off from them, and
kings that came against them from the ends of the earth, and had
overthrown them with great slaughter:  and the rest pay them tribute
every year.

8:5. And that they had defeated in battle Philip and Perses the king of
the Ceteans, and the rest that had borne arms against them, and had
conquered them:

Ceteans. . .That is, the Macedonians.

8:6. And how Antiochus, the great king of Asia, who went to fight
against them, having a hundred and twenty elephants, with horsemen, and
chariots, and a very great army, was routed by them.

8:7. And how they took him alive, and appointed to him, that both he
and they that should reign after him, should pay a great tribute, and
that he should give hostages, and that which was agreed upon,

8:8. And the country of the Indians, and of the Medes, and of the
Lydians, some of their best provinces:  and those which they had taken
from them, they gave to king Eumenes.

Eumenes. . .King of Pergamus.

8:9. And that they who were in Greece, had a mind to go and to destroy
them:  and they had knowledge thereof,

8:10. And they sent a general against them, and fought with them, and
many of them were slain, and they carried away their wives, and their
children captives, and spoiled them, and took possession of their land,
and threw down their walls, and brought them to be their servants unto
this day.

8:11. And the other kingdoms, and islands, that at any time had
resisted them, they had destroyed and brought under their power.

8:12. But with their friends, and such as relied upon them, they kept
amity, and had conquered kingdoms that were near, and that were far
off:  for all that heard their name, were afraid of them.

8:13. That whom they had a mind to help to a kingdom, those reigned:
and whom they would, they deposed from the kingdom:  and they were
greatly exalted.

8:14. And none of all these wore a crown, or was clothed in purple, to
be magnified thereby.

8:15. And that they had made themselves a senate house, and consulted
daily three hundred and twenty men, that sat in counsel always for the
people, that they might do the things that were right:

8:16. And that they committed their government to one man every year,
to rule over all their country, and they all obey one, and there is no
envy nor jealousy amongst them.

To one man. . .There were two consuls:  but one only ruled at one time,
each in his day.--Ibid.  No envy, etc. . .So Judas had heard:  and it was
so far true, with regard to the ancient Romans, that as yet no envy or
jealousy had divided them into such open factions and civil wars, as
they afterwards experienced in the time of Marius and Sylla, etc.

8:17. So Judas chose Eupolemus, the son of John, the son of Jacob, and
Jason, the son of Eleazar, and he sent them to Rome to make a league of
amity and confederacy with them:

8:18. And that they might take off from them the yoke of the Grecians,
for they saw that they oppressed the kingdom of Israel with servitude.

8:19. And they went to Rome, a very long journey, and they entered into
the senate house, and said:

8:20. Judas Machabeus, and his brethren, and the people of the Jews,
have sent us to you to make alliance and peace with you, and that we
may be registered your confederates and friends.

8:21. And the proposal was pleasing in their sight.

8:22. And this is the copy of the writing that they wrote back again,
graven in tables of brass, and sent to Jerusalem, that it might be with
them there for a memorial of the peace, and alliance.

8:23. GOOD SUCCESS BE TO THE ROMANS, and to the people of the Jews by
sea, and by land, for ever:  and far be the sword and enemy from them.

8:24. But if there come first any war upon the Romans, or any of their
confederates, in all their dominions:

8:25. The nation of the Jews shall help them according as the time
shall direct, with all their heart:

8:26. Neither shall they give them, whilst they are fighting, or
furnish them with wheat, or arms, or money, or ships, as it hath seemed
good to the Romans:  and they shall obey their orders, without taking
any thing of them.

8:27. In like manner also if war shall come first upon the nation of
the Jews, the Romans shall help them with all their heart, according as
the time shall permit them:

8:28. And there shall not be given to them that come to their aid,
either wheat, or arms, or money, or ships, as it hath seemed good to
the Romans:  and they shall observe their orders without deceit.

8:29. According to these articles did the Romans covenant with the
people of the Jews.

8:30. And, if after this, one party or the other shall have a mind to
add to these articles, or take away any thing, they may do it at their
pleasure:  and whatsoever they shall add, or take away, shall be
ratified.

8:31. Moreover, concerning the evils that Demetrius, the king, hath
done against them, we have written to him, saying:  Why hast thou made
thy yoke heavy upon our friends and allies, the Jews.

8:32. If, therefore, they come again to us complaining of thee, we will
do them justice, and will make war against thee by sea and land.



1 Machabees Chapter 9


Bacchides is sent again into Judea:  Judas fights against him with eight
hundred men and is slain.  Jonathan succeeds him and revenges the murder
of his brother John.  He fights against Bacchides.  Alcimus dies
miserably.  Bacchides besieges Bethbessen.  He is forced to raise the
siege and leave the country.

9:1. In the mean time, when Demetrius heard that Nicanor and his army
were fallen in battle, he sent again Bacchides and Alcimus into Judea;
and the right wing of his army with them.

9:2. And they took the road that leadeth to Galgal, and they camped in
Masaloth, which is in Arabella:  and they made themselves masters of it,
and slew many people.

9:3. In the first month of the hundred and fifty-second year they
brought the army to Jerusalem:

9:4. And they arose and went to Berea, with twenty thousand men, and
two thousand horsemen.

9:5. Now Judas had pitched his tents in Laisa, and three thousand
chosen men with him:

9:6. And they saw the multitude of the army that they were many, and
they were seized with great fear:  and many withdrew themselves out of
the camp, and there remained of them no more than eight hundred men.

9:7. And Judas saw that his army slipped away, and the battle pressed
upon him, and his heart was cast down:  because he had not time to
gather them together, and he was discouraged.

9:8. Then he said to them that remained:  Let us arise, and go against
our enemies, if we may be able to fight against them.

9:9. But they dissuaded him, saying:  We shall not be able, but let us
save our lives now, and return to our brethren, and then we will fight
against them:  for we are but few.

9:10. Then Judas said:  God forbid we should do this thing, and flee
away from them:  but if our time be come, let us die manfully for our
brethren, and let us not stain our glory.

9:11. And the army removed out of the camp, and they stood over against
them:  and the horsemen were divided into two troops, and the slingers,
and the archers, went before the army, and they that were in the front
were all men of valour.

9:12. And Bacchides was in the right wing, and the legion drew near on
two sides, and they sounded the trumpets:

9:13. And they also that were on Judas's side, even they also cried
out, and the earth shook at the noise of the armies:  and the battle was
fought from morning even unto the evening.

9:14. And Judas perceived that the stronger part of the army of
Bacchides was on the right side, and all the stout of heart came
together with him:

9:15. And the right wing was discomfited by them, and he pursued them
even to the mount Azotus.

9:16. And they that were in the left wing saw that the right wing was
discomfited, and they followed after Judas, and them that were with
him, at their back:

9:17. And the battle was hard fought, and there fell many wounded of
the one side and of the other.

9:18. And Judas was slain, and the rest fled away.

9:19. And Jonathan and Simon took Judas, their brother, and buried him
in the sepulchre of their fathers, in the city of Modin.

9:20. And all the people of Israel bewailed him with great lamentation,
and they mourned for him many days.

9:21. And said:  How is the mighty man fallen, that saved the people of
Israel!

9:22. But the rest of the words of the wars of Judas, and of the noble
acts that he did, and of his greatness, are not written:  for they were
very many.

9:23. And it came to pass, after the death of Judas, that the wicked
began to put forth their heads in all the confines of Israel, and all
the workers of iniquity rose up.

9:24. In those days there was a very great famine, and they and all
their country yielded to Bacchides.

9:25. And Bacchides chose the wicked men, and made them lords of the
country:

9:26. And they sought out, and made diligent search after the friends
of Judas, and brought them to Bacchides, and he took vengeance of them,
and abused them.

9:27. And there was a great tribulation in Israel, such as was not
since the day, that there was no prophet seen in Israel.

9:28. And all the friends of Judas came together, and said to Jonathan:

9:29. Since thy brother Judas died there is not a man like him to go
forth against our enemies, Bacchides, and them that are the enemies of
our nation.

9:30. Now, therefore, we have chosen thee this day to be our prince,
and captain, in his stead, to fight our battles.

9:31. So Jonathan took upon him the government at that time, and rose
up in the place of Judas, his brother

9:32. And Bacchides had knowledge of it, and sought to kill him.

9:33. And Jonathan, and Simon, his brother, knew it, and all that were
with them:  and they fled into the desert of Thecua, and they pitched by
the water of the lake Asphar,

9:34. And Bacchides understood it, and he came himself, with all his
army, over the Jordan, on the sabbath day.

9:35. And Jonathan sent his brother, a captain of the people, to desire
the Nabutheans his friends, that they would lend them their equipage,
which was copious.

9:36. And the children of Jambri came forth out of Madaba, and took
John, and all that he had, and went away with them.

9:37. After this it was told Jonathan, and Simon, his brother, that the
children of Jambri made a great marriage, and were bringing the bride
out of Madaba, the daughter of one of the great princes of Chanaan,
with great pomp.

9:38. And they remembered the blood of John, their brother:  and they
went up, and hid themselves under the covert of the mountain.

9:39. And they lifted up their eyes, and saw:  and behold a tumult, and
great preparation:  and the bridegroom came forth, and his friends, and
his brethren to meet them with timbrels, and musical instruments and
many weapons.

9:40. And they rose up against them from the place where they lay in
ambush, and slew them, and there fell many wounded, and the rest fled
into the mountains, and they took all their spoils:

9:41. And the marriage was turned into mourning, and the noise of their
musical instruments into lamentation.

9:42. And they took revenge for the blood of their brother:  and they
returned to the bank of the Jordan.

9:43. And Bacchides heard it, and he came on the sabbath day even to
the bank of the Jordan, with a great power.

9:44. And Jonathan said to his company:  Let us arise, and fight against
our enemies:  for it is not now as yesterday, and the day before.

9:45. For behold the battle is before us, and the water of the Jordan
on this side and on that side, and banks, and marshes, and woods:  and
there is no place for us to turn aside.

9:46. Now, therefore, cry ye to heaven, that ye may be delivered from
the hand of your enemies.  And they joined battle.

9:47. And Jonathan stretched forth his hand to strike Bacchides, but he
turned away from him backwards.

9:48. And Jonathan, and they that were with him, leapt into the Jordan,
and swam over the Jordan to them.

9:49. And there fell of Bacchides' side that day a thousand men:  and
they returned to Jerusalem,

9:50. And they built strong cities in Judea, the fortress that was in
Jericho, and in Ammaus, and in Bethoron, and in Bethel, and Thamnata,
and Phara, and Thopo, with high walls, and gates, and bars.

9:51. And he placed garrisons in them, that they might wage war against
Israel:

9:52. And he fortified the city of Bethsura, and Gazara, and the
castle, and set garrisons in them, and provisions of victuals:

9:53. And he took the sons of the chief men of the country for
hostages, and put them in the castle in Jerusalem in custody.

9:54. Now in the year one hundred and fifty-three, the second month,
Alcimus commanded the walls of the inner court of the sanctuary to be
thrown down, and the works of the prophets to be destroyed:  and he
began to destroy.

9:55. At that time Alcimus was struck:  and his works were hindered, and
his mouth was stopped, and he was taken with a palsy, so that he could no
more speak a word, nor give order concerning his house.

9:56. And Alcimus died at that time in great torment.

9:57. And Bacchides saw that Alcimus was dead:  and he returned to the
king, and the land was quiet for two years.

9:58. And all the wicked held a council, saying:  Behold Jonathan, and
they that are with him, dwell at ease and without fear:  now, therefore,
let us bring Bacchides hither, and he shall take them all in one night.

9:59. So they went, and gave him counsel.

9:60. And he arose to come with a great army:  and he sent secretly
letters to his adherents that were in Judea to seize upon Jonathan, and
them that were with him:  but they could not, for their design was known
to them.

9:61. And he apprehended of the men of the country, that were the
principal authors of the mischief, fifty men, and he slew them.

9:62. And Jonathan, and Simon, and they that were with him, retired
into Bethbessen, which is in the desert:  and he repaired the breaches
thereof, and they fortified it.

9:63. And when Bacchides knew it, he gathered together all his
multitude:  and sent word to them that were of Judea.

9:64. And he came, and camped above Bethbessen, and fought against it
many days, and made engines.

9:65. But Jonathan left his brother, Simon, in the city and went forth
into the country, and came with a number of men,

9:66. And struck Odares, and his brethren, and the children of
Phaseron, in their tents, and he began to slay, and to increase in
forces.

9:67. But Simon, and they that were with him, sallied out of the city,
and burnt the engines,

9:68. And they fought against Bacchides, and he was discomfited by
them:  and they afflicted him exceedingly, for his counsel, and his
enterprise was in vain.

9:69. And he was angry with the wicked men that had given him counsel
to come into their country, and he slew many of them:  and he purposed
to return with the rest into their country.

9:70. And Jonathan had knowledge of it, and he sent ambassadors to him
to make peace with him, and to restore to him the prisoners.

9:71. And he accepted it willingly, and did according to his words, and
swore that he would do him no harm all the days of his life.

9:72. And he restored to him the prisoners which he before had taken
out of the land of Juda:  and he returned, and went away into his own
country, and he came no more into their borders.

9:73. So the sword ceased from Israel:  and Jonathan dwelt in Machmas,
and Jonathan began there to judge the people, and he destroyed the
wicked out of Israel.



1 Machabees Chapter 10


Alexander Bales sets himself up for king:  both he and Demetrius seek to
make Jonathan their friend.  Alexander kills Demetrius in battle, and
honours Jonathan.  His victory over Apollonius.

10:1. Now in the hundred and sixtieth year, Alexander, the son of
Antiochus, surnamed the Illustrious, came up and took Ptolemais, and
they received him, and he reigned there.

10:2. And king Demetrius heard of it, and gathered together an
exceeding great army, and went forth against him to fight.

10:3. And Demetrius sent a letter to Jonathan, with peaceable words, to
magnify him.

10:4. For he said:  Let us first make a peace with him, before he make
one with Alexander against us.

10:5. For he will remember all the evils that we have done against him,
and against his brother, and against his nation.

10:6. And he gave him authority to gather together a army, and to make
arms, and that he should be his confederate:  and the hostages that were
in the castle, he commanded to be delivered to him.

10:7. And Jonathan came to Jerusalem, and read the letters in the
hearing of all the people, and of them that were in the castle.

10:8. And they were struck with great fear, because they heard that the
king had given him authority to gather together an army.

10:9. And the hostages were delivered to Jonathan, and he restored them
to their parents.

10:10. And Jonathan dwelt in Jerusalem, and began to build, and to
repair the city.

10:11. And he ordered workmen to build the walls, and mount Sion round
about with square stones for fortification:  and so they did.

10:12. Then the strangers that were in the strong holds, which
Bacchides had built, fled away.

10:13. And every man left his place, and departed into his own country:

10:14. Only in Bethsura there remained some of them, that had forsaken
the law, and the commandments of God:  for this was a place of refuge
for them.

10:15. And king Alexander heard of the promises that Demetrius had made
Jonathan:  and they told him of the battles, and the worthy acts that he
and his brethren had done, and the labours that they had endured.

10:16. And he said:  Shall we find such another man?  now, therefore, we
will make him our friend and our confederate.

10:17. So he wrote a letter, and sent it to him according to these
words, saying:

10:18. King Alexander to his brother, Jonathan, greetings.

10:19. We have heard of thee, that thou art a man of great power, and
fit to be our friend:

10:20. Now therefore, we make thee this day high priest of thy nation,
and that thou be called the king's friend, (and he sent him a purple
robe, and a crown of gold) and that thou be of one mind with us in our
affairs, and keep friendship with us.

10:21. Then Jonathan put on the holy vestment in the seventh month, in
the year one hundred and threescore, at the feast day of the
tabernacles:  and he gathered together an army, and made a great number
of arms.

10:22. And Demetrius heard these words, and was exceeding sorry, and
said:

10:23. What is this that we have done, that Alexander hath prevented us
to gain the friendship of the Jews to strengthen himself?

10:24. I also will write to them words of request, and offer dignities,
and gifts:  that they may be with me to aid me.

10:25. And he wrote to them in these words:  King Demetrius to the
nation of the Jews, greeting.

10:26. Whereas you have kept covenant with us, and have continued in
our friendship, and have not joined with our enemies, we have heard of
it, and are glad.

10:27. Wherefore now continue still to keep fidelity towards us, and we
will reward you with good things, for what you have done in our behalf.

10:28. And we will remit to you many charges, and will give you gifts.

10:29. And now I free you, and all the Jews, from tributes, and I
release you from the customs of salt, and remit the crowns, and the
thirds of the seed:

10:30. And the half of the fruit of trees, which is my share, I leave
to you from this day forward, so that it shall not be taken of the land
of Juda, and of the three cities that are added thereto out of Samaria
and Galilee, from this day forth, and for ever:

10:31. And let Jerusalem be holy and free, with the borders thereof:
and let the tenths, and tributes be for itself.

10:32. I yield up also the power of the castle that is in Jerusalem,
and I give it to the high priest, to place therein such men as he shall
choose, to keep it.

10:33. And every soul of the Jews that hath been carried captive from
the land of Juda in all my kingdom, I set at liberty freely, that all
be discharged from tributes, even of their cattle.

10:34. And I will that all the feasts, and the sabbaths, and the new
moons, and the days appointed, and three days before the solemn day,
and three days after the solemn day, be all days of immunity and
freedom, for all the Jews that are in my kingdom:

10:35. And no man shall have power to do any thing against them, or to
molest any of them, in any cause.

10:36. And let there be enrolled in the king's army to the number of
thirty thousand of the Jews:  and allowance shall be made them, as is
due to all the king's forces and certain of them shall be appointed to
be in the fortresses of the great king:

10:37. And some of them shall be set over the affairs of the kingdom,
that are of trust, and let the governors be taken from among
themselves, and let them walk in their own laws, as the king hath
commanded in the land of Juda.

10:38. And the three cities that are added to Judea, out of the country
of Samaria, let them be accounted with Judea:  that they may be under
one, and obey no other authority but that of the high priest:

10:39. Ptolemais and the confines thereof, I give as a free gift to the
holy places that are in Jerusalem, for the necessary charges of the
holy things.

10:40. And I give every year fifteen thousand sickles of silver out of
the king's accounts, of what belongs to me:

10:41. And all that is above, which they that were over the affairs the
years before, had not paid, from this time they shall give it to the
works of the house.

10:42. Moreover, the five thousand sickles of silver, which they
received from the account of the holy places, every year, shall also
belong to the priests that execute the ministry.

10:43. And whosoever shall flee into the temple that is in Jerusalem,
and in all the borders thereof, being indebted to the king for any
matter, let them be set at liberty, and all that they have in my
kingdom, let them have it free.

10:44. For the building also, or repairing the works of the holy
places, the charges shall be given out of the king's revenues:

10:45. For the building also of the walls of Jerusalem, and the
fortifying thereof round about, the charges shall be given out of the
king's account, as also for the building of the walls in Judea.

10:46. Now when Jonathan and the people heard these words, they gave no
credit to them, nor received them because they remembered the great
evil that he had done in Israel, for he had afflicted them exceedingly.

10:47. And their inclinations were towards Alexander, because he had
been the chief promoter of peace in their regard, and him they always
helped.

10:48. And king Alexander gathered together a great army, and moved his
camp near to Demetrius.

10:49. And the two kings joined battle, and the army of Demetrius fled
away, and Alexander pursued after him, and pressed them close.

10:50. And the battle was hard fought, till the sun went down:  and
Demetrius was slain that day.

10:51. And Alexander sent ambassadors to Ptolemee king of Egypt, with
words to this effect, saying:

Ptolemee. . .Surnamed Philometer.

10:52. Forasmuch as I am returned into my kingdom and am set in the
throne of my ancestors, and have gotten the dominion, and have
overthrown Demetrius and possessed our country,

10:53. And have joined battle with him, and both he and his army have
been destroyed by us, and we are placed in the throne of his kingdom:

10:54. Now, therefore, let us make friendship one with another:  and
give me now thy daughter to wife, and I will be thy son in law, and I
will give both thee and her gifts worthy of thee.

10:55. And king Ptolomee answered, saying:  Happy is the day wherein
thou didst return to the land of thy fathers, and sattest in the throne
of their kingdom.

10:56. And now I will do to thee as thou hast written but meet me at
Ptolemais, that we may see one another, and I may give her to thee as
thou hast said.

10:57. So Ptolemee went out of Egypt, with Cleopatra his daughter, and
he came to Ptolemais, in the hundred and sixty-second year.

10:58. And king Alexander met him, and he gave him his daughter,
Cleopatra:  and he celebrated her marriage at Ptolemais with great
glory, after the manner of kings.

10:59. And king Alexander wrote to Jonathan, that he should come and
meet him.

10:60. And he went honourably to Ptolemais, and he met there the two
kings, and he gave them much silver, and gold, and presents:  and he
found favour in their sight.

10:61. And some pestilent men of Israel, men of a wicked life,
assembled themselves against him, to accuse him:  and the king gave no
heed to them.

10:62. And he commanded that Jonathan's garments should be taken off,
and that he should be clothed with purple:  and they did so.  And the
king made him sit by himself.

10:63. And he said to his princes:  Go out with him into the midst of
the city, and make proclamation, that no man complain against him of
any matter, and that no man trouble him for any manner of cause.

10:64. So when his accusers saw his glory proclaimed, and him clothed
with purple, they all fled away.

10:65. And the king magnified him, and enrolled him amongst his chief
friends, and made him governor, and partaker of his dominion.

10:66. And Jonathan returned into Jerusalem with peace and joy.

10:67. In the year one hundred and sixty-five, Demetrius, the son of
Demetrius, came from Crete into the land of his fathers.

10:68. And king Alexander heard of it, and was much troubled, and
returned to Antioch.

10:69. And king Demetrius made Apollonius his general, who was governor
of Celesyria:  and he gathered together a great army, and came to
Jamnia:  and he sent to Jonathan, the high priest,

10:70. Saying:  Thou alone standest against us, and I am laughed at and
reproached, because thou shewest thy power against us in the mountains.

10:71. Now, therefore, if thou trustest in thy forces, come down to us
into the plain, and there let us try one another:  for with me is the
strength of war.

10:72. Ask, and learn who I am, and the rest that help me, who also say
that your foot cannot stand before our face, for thy fathers have twice
been put to flight in their own land:

10:73. And now how wilt thou be able to abide the horsemen, and so
great an army in the plain, where there is no stone, nor rock, nor
place to flee to?

10:74. Now when Jonathan heard the words of Apollonius, he was moved in
his mind:  and he chose ten thousand men, and went out of Jerusalem, and
Simon, his brother, met him to help him.

10:75. And they pitched their tents near Joppe, but they shut him out
of the city:  because a garrison of Apollonius was in Joppe, and he laid
siege to it.

10:76. And they that were in the city being affrighted, opened the
gates to him:  so Jonathan took Joppe.

10:77. And Apollonius heard of it, and he took three thousand horsemen,
and a great army.

10:78. And he went to Azotus, as one that was making a journey, and
immediately he went forth into the plain:  because he had a great number
of horsemen, and he trusted in them.  And Jonathan followed after him to
Azotus, and they joined battle.

10:79. And Apollonius left privately in the camp a thousand horsemen
behind them.

10:80. And Jonathan knew that there was an ambush behind him, and they
surrounded his army, and cast darts at the people from morning till
evening.

10:81. But the people stood still, as Jonathan had commanded them:  and
so their horses were fatigued.

10:82. Then Simon drew forth his army, and attacked the legion:  for the
horsemen were wearied:  and they were discomfited by him, and fled.

10:83. And they that were scattered about the plain fled into Azotus,
and went into Bethdagon, their idol's temple, there to save themselves.

10:84. But Jonathan set fire to Azotus, and the cities that were round
about it, and took the spoils of them and the temple of Dagon:  and all
them that were fled into it, he burnt with fire.

10:85. So they that were slain by the sword, with them that were burnt,
were almost eight thousand men.

10:86. And Jonathan, removed his army from thence and camped against
Ascalon:  and they went out of the city to meet him with great honour.

10:87. And Jonathan returned into Jerusalem with his people, having
many spoils.

10:88. And it came to pass, when Alexander, the king heard these words,
that he honoured Jonathan yet more.

10:89. And he sent him a buckle of gold, as the custom is, to be given
to such as are of the royal blood.  And he gave him Accaron, and all the
borders thereof, in possession.



1 Machabees Chapter 11


Ptolemee invades the kingdom of Alexander:  the latter is slain:  and the
former dies soon after.  Demetrius honours Jonathan, and is rescued by
the Jews from his own subjects in Antioch.  Antiochus the younger
favours Jonathan.  His exploits in divers places.

11:1. And the king of Egypt gathered together an army, like the sand
that lieth upon the sea shore, and many ships:  and he sought to get the
kingdom of Alexander by deceit, and join it to his own kingdom.

11:2. And he went out into Syria with peaceable words and they opened
to him the cities, and met him:  for king Alexander had ordered them to
go forth to meet him, because he was his father in law.

11:3. Now when Ptolemee entered into the cities, he put garrisons of
soldiers in every city.

11:4. And when he came near to Azotns, they shewed him the temple of
Dagon that was burnt with fire, and Azotus, and the suburbs thereof,
that were destroyed, and the bodies that were cast abroad, and the
graves of them that were slain in the battle, which they had made near
the way.

11:5. And they told the king that Jonathan had done these things, to
make him odious:  but the king held his peace.

11:6. And Jonathan came to meet the king at Joppe with glory, and they
saluted one another, and they lodged there.

11:7. And Jonathan went with the king as far as the river, called
Eleutherus:  and he returned into Jerusalem.

11:8. And king Ptolemee got the dominion of the cities by the sea side,
even to Seleucia, and he devised evil designs against Alexander.

11:9. And he sent ambassadors to Demetrius, saying:  Come, let us make a
league between us, and I will give thee my daughter whom Alexander
hath, and thou shalt reign in the kingdom of thy father.

11:10. For I repent that I have given him my daughter:  for he hath
sought to kill me.

11:11. And he slandered him, because he coveted his kingdom,

11:12. And he took away his daughter, and gave her to Demetrius, and
alienated himself from Alexander, and his enmities were made manifest.

11:13. And Ptolemee entered into Antioch, and set two crowns upon his
head, that of Egypt, and that of Asia.

11:14. Now king Alexander was in Cilicia at that time:  because they
that were in those places had rebelled.

11:15. And when Alexander heard of it, he came to give him battle:  and
king Ptolemee brought forth his army, and met him with a strong power,
and put him to flight.

11:16. And Alexander fled into Arabia, there to be protected:  and king
Ptolemee was exalted.

11:17. And Zabdiel the Arabian took off Alexander's head, and sent it
to Ptolemee.

11:18. And king Ptolemee died the third day after:  and they that were
in the strong holds were destroyed by them that were within the camp.

11:19. And Demetrius reigned in the hundred and sixty-seventh year.

11:20. In those days Jonathan gathered together them that were in
Judea, to take the castle that was in Jerusalem:  and they made many
engines of war against it.

11:21. Then some wicked men that hated their own nation, went away to
king Demetrius, and told him that Jonathan was besieging the castle.

11:22. And when he heard it, he was angry:  and forthwith he came to
Ptolemais, and wrote to Jonathan that he should not besiege the castle,
but should come to him in haste, and speak to him.

11:23. But when Jonathan heard this, he bade them besiege it still:  and
he chose some of the ancients of Israel, and of the priests, and put
himself in danger

11:24. And he took gold, and silver, and raiment, and many other
presents, and went to the king to Ptolemais and he found favour in his
sight.

11:25. And certain wicked men of his nation made complaints against
him.

11:26. And the king treated him as his predecessors had done before:
and he exalted him in the sight of all his friends.

11:27. And he confirmed him in the high priesthood and all the honours
he had before, and he made him the chief of his friends.

11:28. And Jonathan requested of the king that he would make Judea free
from tribute, and the three governments, and Samaria, and the confines
thereof:  and he promised him three hundred talents.

11:29. And the king consented:  and he wrote letters to Jonathan of all
these things, to this effect.

11:30. King Demetrius to his brother, Jonathan, and to the nation of
the Jews, greeting.

11:31. We send you here a copy of the letter which we have written to
Lasthenes, our parent, concerning you, that you might know it.

11:32. King Demetrius to Lasthenes, his parent, greetings.

11:33. We have determined to do good to the nation of the Jews, who are
our friends, and keep the things that are just with us, for their good
will which they bear towards us.

11:34. We have ratified, therefore, unto them all the borders of Judea,
and the three cities, Apherema, Lydda, and Ramatha, which are added to
Judea, out of Samaria, and all their confines, to be set apart to all
them that sacrifice in Jerusalem, instead of the payments which the
king received of them every year, and for the fruits of the land, and
of the trees.

Apherema. . .is found only in the Greek version.

11:35. And as for other things that belonged to us of the tithes, and
of the tributes, from this time we discharge them of them:  the saltpans
also, and the crowns that were presented to us.

11:36. We give all to them, and nothing hereof shall be revoked from
this time forth and for ever.

11:37. Now, therefore, see that thou make a copy of these things, and
let it be given to Jonathan, and set upon the holy mountain, in a
conspicuous place.

11:38. And king Demetrius, seeing that the land was quiet before him,
and nothing resisted him, sent away all his forces, every man to his
own place, except the foreign army, which he had drawn together from
the islands of the nations:  so all the troops of his fathers hated him.

11:39. Now there was one Tryphon who had been of Alexander's party
before:  who seeing that all the army murmured against Demetrius, went
to Emalchuel, the Arabian, who brought up Antiochus, the son of
Alexander:

11:40. And he pressed him much to deliver him to him, that he might be
king in his father's place:  and he told him all that Demetrius had
done, and how his soldiers hated him.  And he remained there many days.

11:41. And Jonathan sent to king Demetrius, desiring that he would cast
out them that were in the castle in Jerusalem, and those that were in
the strong holds:  because they fought against Israel.

11:42. And Demetrius sent to Jonathan, saying:  I will not only do this
for thee, and for thy people, but I will greatly honour thee, and thy
nation, when opportunity shall serve.

11:43. Now, therefore, thou shalt do well if thou send me men to help
me:  for all my army is gone from me.

11:44. And Jonathan sent him three thousand valiant men to Antioch:  and
they came to the king, and the king was very glad of their coming.

11:45. And they that were of the city assembled themselves together, to
the number of a hundred and twenty thousand men, and would have killed
the king.

11:46. And the king fled into the palace:  and they of the city kept the
passages of the city, and began to fight.

11:47. And the king called the Jews to his assistance:  and they came to
him all at once, and they all dispersed themselves through the city.

11:48. And they slew in that day a hundred thousand men, and they set
fire to the city, and got many spoils that day, and delivered the king.

11:49. And they that were of the city saw that the Jews had got the
city as they would:  and they were discouraged in their mind, and cried
to the king, making supplication, and saying

1:50. Grant us peace, and let the Jews cease from assaulting us, and
the city.

11:51. And they threw down their arms, and made peace, and the Jews
were glorified in the sight of the king, and in the sight of all that
were in his realm, and were renowned throughout the kingdom, and
returned to Jerusalem with many spoils.

11:52. So king Demetrius sat in the throne of his kingdom:  and the land
was quiet before him.

11:53. And he falsified all whatsoever he had said, and alienated
himself from Jonathan, and did not reward him according to the benefits
he had received from him, but gave him great trouble.

11:54. And after this Tryphon returned, and with him Antiochus, the
young boy, who was made king, and put on the diadem.

11:55. And there assembled unto him all the hands which Demetrius had
sent away, and they fought against Demetrius who turned his back and
fled.

11:56. And Tryphon took the elephants, and made himself master of
Antioch.

11:57. And young Antiochus wrote to Jonathan, saying:  I confirm thee in
the high priesthood, and I appoint thee ruler over the four cities, and
to be one of the king's friends.

11:58. And he sent him vessels of gold for his service, and he gave him
leave to drink in gold, and to be clothed in purple, and to wear a
golden buckle:

11:59. And he made his brother, Simon, governor, from the borders of
Tyre even to the confines of Egypt.

11:60. Then Jonathan went forth, and passed through the cities beyond
the river, and all the forces of Syria gathered themselves to him to
help him, and he came to Ascalon, and they met him honourably out of
the city.

11:61. And he went from thence to Gaza:  and they that were in Gaza shut
him out:  and he besieged it, and burnt all the suburbs round about, and
took the spoils.

11:62. And the men of Gaza made supplication to Jonathan, and he gave
them the right hand:  and he took their sons for hostages, and sent them
to Jerusalem:  and he went through the country, as far as Damascus.

11:63. And Jonathan heard that the generals of Demetrius were come
treacherously to Cades, which is in Galilee, with a great army,
purposing to remove him from the affairs of the kingdom.

11:64. And he went against them:  but left his brother, Simon, in the
country.

11:65. And Simon encamped against Bethsura, and assaulted it many days,
and shut them up.

11:66. And they desired him to make peace, and he granted it them:  and
he cast them out from thence, and took the city, and placed a garrison
in it.

11:67. And Jonathan and his army encamped by the water of Genesar, and
before it was light they were ready in the plain of Asor.

11:68. And behold the army of the strangers met him in the plain, and
they laid an ambush for him in the mountains:  but he went out against
them.

11:69. And they that lay in ambush rose out of their places, and joined
battle.

11:70. And all that were on Jonathan's side fled, and none was left of
them, but Mathathias, the son of Absalom, and Judas, the son of Calphi,
chief captain of the army.

11:71. And Jonathan rent his garments, and cast earth upon his head,
and prayed.

11:72. And Jonathan turned again to them to battle, and he put them to
flight, and they fought.

11:73. And they of his part that fled saw this, and they turned again
to him, and they all with him pursued the enemies, even to Cades, to
their own camp, and they came even thither.

11:74. And there fell of the aliens in that day three thousand men:  and
Jonathan returned to Jerusalem.



1 Machabees Chapter 12


Jonathan renews his league with the Romans and Lacedemonians.  The
forces of Demetrius flee away from him.  He is deceived and made
prisoner by Tryphon.

12:1. And Jonathan saw that the time served him, and he chose certain
men, and sent them to Rome, to confirm and to renew the amity with
them:

12:2. And he sent letters to the Spartans, and to other places,
according to the same form.

12:3. And they went to Rome, and entered into the senate house, and
said:  Jonathan, the high priest, and the nation of the Jews, have sent
us to renew the amity, and alliance, as it was before.

12:4. And they gave them letters to their governors in every place, to
conduct them into the land of Juda with peace.

12:5. And this is a copy of the letters which Jonathan wrote to the
Spartans:

12:6. Jonathan, the high priest, and the ancients of the nation, and
the priests, and the rest of the people of the Jews, to the Spartans,
their brethren, greeting.

12:7. There were letters sent long ago to Onias the high priest, from
Arius, who reigned then among you to signify that you are our brethren,
as the copy here underwritten doth specify.

12:8. And Onias received the ambassador with honour and received the
letters, wherein there was mention made of the alliance, and amity.

12:9. We, though we needed none of these things having for our comfort
the holy books that are in our hands,

12:10. Chose rather to send to you to renew the brotherhood and
friendship, lest we should become stranger to you altogether:  for there
is a long time passed since you sent to us.

12:11. We, therefore, at all times without ceasing, both in our
festivals, and other days wherein it is convenient, remember you in the
sacrifices that we offer, and in our observances, as it is meet and
becoming to remember brethren.

12:12. And we rejoice at your glory.

12:13. But we have had many troubles and wars on every side; and the
kings that are round about us have fought against us.

12:14. But we would not be troublesome to you, nor to the rest of our
allies and friends, in these wars.

12:15. For we have had help from heaven, and we have been delivered,
and our enemies are humbled.

12:16. We have chosen, therefore, Numenius the son of Antiochus, and
Antipater, the son of Jason, and have sent them to the Romans, to renew
with them the former amity and alliance.

12:17. And we have commanded them to go also to you, and salute you,
and to deliver you our letters, concerning the renewing of our
brotherhood.

12:18. And now you shall do well to give us an answer hereto.

12:19. And this is the copy of the letter which he had sent to Onias:

12:20. Arius, king of the Spartans, to Onias, the high priest,
greeting.

12:21. It is found in writing concerning the Spartans, and the Jews,
that they are brethren, and that they are of the stock of Abraham.

12:22. And now since this is come to our knowledge, you do well to
write to us of your prosperity.

12:23. And we also have written back to you, That our cattle, and our
possessions, are yours:  and yours, ours.  We, therefore, have commanded
that these things should be told you.

12:24. Now Jonathan heard that the generals of Demetrius were come
again with a greater army than before to fight against him.

12:25. So he went out from Jerusalem, and met them in the land of
Amath:  for he gave them no time to enter into his country.

12:26. And he sent spies into their camp, and they came back, and
brought him word that they designed to come upon them in the night.

12:27. And when the sun was set, Jonathan commanded his men to watch,
and to be in arms all night long ready to fight, and he set sentinels
round about the camp.

12:28. And the enemies heard that Jonathan and his men were ready for
battle:  and they were struck with fear and dread in their heart:  and
they kindled fires in their camp.

12:29. But Jonathan, and they that were with him, knew it not till the
morning:  for they saw the lights burning.

12:30. And Jonathan pursued after them, but overtook them not:  for they
had passed the river Eleutherus.

12:31. And Jonathan turned upon the Arabians, that are called
Zabadeans:  and he defeated them, and took the spoils of them.

12:32. And he went forward, and came to Damascus, and passed through
all that country.

12:33. Simon also went forth, and came as far as Ascalon, and the
neighbouring fortresses, and he turned aside to Joppe, and took
possession of it,

12:34. (For he heard that they designed to deliver the hold to them
that took part with Demetrius) and he put a garrison there to keep it.

12:35. And Jonathan came back, and called together the ancients of the
people; and he took a resolution with them to build fortresses in
Judea,

12:36. And to build up walls in Jerusalem, and raise a mount between
the castle and the city, to separate it from the city, that so it might
have no communication, and that they might neither buy nor sell.

12:37. And they came together to build up the city:  for the wall that
was upon the brook, towards the east, was broken down, and he repaired
that which is called Caphetetha:

12:38. And Simon built Adiada in Sephela, and fortified it, and set up
gates and bars.

12:39. Now when Tryphon had conceived a design to make himself king of
Asia and to take the crown, and to stretch out his hand against king
Antiochus:

12:40. Fearing lest Jonathan would not suffer him, but would fight
against him:  he sought to seize upon him, and to kill him.  So he rose
up and came to Bethsan.

12:41. And Jonathan went out to meet him with forty thousand men chosen
for battle, and came to Bethsan.

12:42. Now when Tryphon saw that Jonathan came with a great army, he
durst not stretch forth his hand against him.

12:43. But received him with honour, and commended him to all his
friends, and gave him presents:  and he commanded his troops to obey
him, as himself.

12:44. And he said to Jonathan:  Why hast thou troubled all the people,
whereas we have no war?

12:45. Now, therefore, send them back to their own houses:  and choose
thee a few men that may be with thee, and come with me to Ptolemais,
and I will deliver it to thee, and the rest of the strong holds, and
the army, and all that have any charge, and I will return and go away:
for this is the cause of my coming.

12:46. And Jonathan believed him, and did as he said:  and sent away his
army, and they departed into the land of Juda:

12:47. But he kept with him three thousand men:  of whom he sent two
thousand into Galilee, and one thousand went with him.

12:48. Now as soon as Jonathan entered into Ptolemais, they of
Ptolemais shut the gates of the city, and took him:  and all them that
came in with him they slew with the sword.

12:49. Then Tryphon sent an army and horsemen into Galilee, and into
the great plain, to destroy all Jonathan's company.

12:50. But they, when they understood that Jonathan, and all that were
with him, were taken and slain, encouraged one another, and went out
ready for battle.

12:51. Then they that had come after them, seeing that they stood for
their lives, returned back.

12:52. Whereupon they all came peaceably into the land of Juda and they
bewailed Jonathan, and them that had been with him, exceedingly:  and
Israel mourned with great lamentation.

12:53. Then all the heathens that were round about them, sought to
destroy them.  For they said:

12:54. They have no prince, nor any to help them:  now therefore, let us
make war upon them, and take away the memory of them from amongst men.



1 Machabees Chapter 13


Simon is made captain general in the room of his brother.  Jonathan is
slain by Tryphon.  Simon is favoured by Demetrius:  he taketh Gaza, and
the castle of Jerusalem.

13:1. Now Simon heard that Tryphon was gathering together a very great
army to invade the land of Juda, and to destroy it.

13:2. And seeing that the people was in dread and in fear, he went up
to Jerusalem, and assembled the people,

13:3. And exhorted them, saying:  You know what great battles I and my
brethren, and the house of my father, have fought for the laws, and the
sanctuary, and the distresses that we have seen:

13:4. By reason whereof all my brethren have lost their lives for
Israel's sake, and I am left alone.

13:5. And now far be it from me to spare my life in any time of
trouble:  for I am not better than my brethren.

13:6. I will avenge then my nation and the sanctuary, and our children,
and wives:  for all the heathens are gathered together to destroy us out
of mere malice.

13:7. And the spirit of the people was enkindled as soon as they heard
these words:

13:8. And they answered with a loud voice, saying:  Thou art our leader
in the place of Judas, and Jonathan, thy brother:

13:9. Fight thou our battles, and we will do whatsoever thou shalt say
to us.

13:10. So gathering together all the men of war, he made haste to
finish all the walls of Jerusalem, and he fortified it round about.

13:11. And he sent Jonathan, the son of Absalom, and with him a new
army, into Joppe, and he cast out them that were in it, and himself
remained there.

13:12. And Tryphon removed from Ptolemais with a great army, to invade
the land of Juda, and Jonathan was with him in custody.

13:13. But Simon pitched in Addus, over against the plain.

13:14. And when Tryphon understood that Simon was risen up in the place
of his brother, Jonathan, and that he meant to join battle with him, he
sent messengers to him,

13:15. Saying:  We have detained thy brother, Jonathan, for the money
that he owed in the king's account, by reason of the affairs which he
had the management of.

13:16. But now send a hundred talents of silver, and his two sons for
hostages, that when he is set at liberty he may not revolt from us, and
we will release him.

13:17. Now Simon knew that he spoke deceitfully to him; nevertheless,
he ordered the money and the children to be sent, lest he should bring
upon himself a great hatred of the people of Israel, who might have
said:

13:18. Because he sent not the money and the children therefore is he
lost.

13:19. So he sent the children and the hundred talents and he lied, and
did not let Jonathan go.

13:20. And after this, Tryphon entered within the country, to destroy
it:  and they went about by the way that leadeth to Ador:  and Simon and
his army marched to every place whithersoever they went.

Simon and his army marched to every place whithersoever they
went. . .That is, whithersoever Tryphon and his horsemen went in order
to oppose them.

13:21. And they that were in the castle, sent messengers to Tryphon,
that he should make haste to come through the desert, and send them
victuals.

13:22. And Tryphon made ready all his horsemen to come that night; but
there fell a very great snow, and he came not into the country of
Galaad.

13:23. And when he approached to Bascama, he slew Jonathan and his sons
there.

13:24. And Tryphon returned, and went into his own country.

13:25. And Simon sent, and took the bones of Jonathan, his brother, and
buried them in Modin, the city of his fathers.

13:26. And all Israel bewailed him with great lamentation:  and they
mourned for him many days.

13:27. And Simon built over the sepulchre of his father and of his
brethren, a building lofty to the sight, of polished stone, behind and
before:

13:28. And he set up seven pyramids, one against another, for his
father, and his mother, and his four brethren:

13:29. And round about these he set great pillars; and upon the
pillars, arms, for a perpetual memory; and by the arms, ships carved,
which might be seen by all that sailed on the sea.

13:30. This is the sepulchre that he made in Modin, even unto this day.

13:31. But Tryphon, when he was upon a journey with the young king,
Antiochus, treacherously slew him.

13:32. And he reigned in his place, and put on the crown of Asia:  and
brought great evils upon the land.

13:33. And Simon built up the strong holds of Judea, fortifying them
with high towers, and great walls, and gates and bars:  and he stored up
victuals in the fortresses.

13:34. And Simon chose men, and sent to king Demetrius, to the end that
he should grant an immunity to the land; for all that Tryphon did, was
to spoil.

13:35. And king Demetrius, in answer to this request, wrote a letter in
this manner:

13:36. King Demetrius to Simon, the high priest, and friend of kings,
and to the ancients, and to the nation of the Jews, greeting:

13:37. The golden crown, and the palm, which you sent, we have
received:  and we are ready to make a firm peace with you, and to write
to the king's chief officers to release you the things that we have
released.

13:38. For all that we have decreed in your favour shall stand in
force.  The strong holds that you have built, shall be your own.

13:39. And as for any oversight or fault committed unto this day, we
forgive it:  and the crown which you owed:  and if any other thing were
taxed in Jerusalem, now let it not be taxed.

13:40. And if any of you be fit to be enrolled among ours, let them be
enrolled, and let there be peace between us.

13:41. In the year one hundred and seventy, the yoke of the Gentiles
was taken off from Israel.

13:42. And the people of Israel began to write in the instruments, and
public records, The first year under Simon, the high priest, the great
captain, and prince of the Jews.

13:43. In those days Simon besieged Gaza, and camped round about it,
and he made engines, and set them to the city, and he struck one tower,
and took it.

13:44. And they that were within the engine leapt into the city:  and
there was a great uproar in the city.

13:45. And they that were in the city went up, with their wives and
children, upon the wall, with their garments rent, and they cried with
a loud voice, beseeching Simon to grant them peace.

13:46. And they said:  Deal not with us according to our evil deeds, but
according to thy mercy.

13:47. And Simon being moved, did not destroy them but yet he cast them
out of the city, and cleansed the houses wherein there had been idols,
and then he entered into it with hymns, blessing the Lord:

13:48. And having cast out of it all uncleanness, he placed in it men
that should observe the law:  and he fortified it, and made it his
habitation.

13:49. But they that were in the castle of Jerusalem were hindered from
going out and coming into the country, and from buying and selling:  and
they were straitened with hunger, and many of them perished through
famine.

13:50. And they cried to Simon for peace, and he granted it to them:
and he cast them out from thence and cleansed the castle from
uncleannesses.

13:51. And they entered into it the three and twentieth day of the
second month, in the year one hundred and seventy-one, with
thanksgiving, and branches of palm trees, and harps, and cymbals, and
psalteries, and hymns, and canticles, because the great enemy was
destroyed out of Israel.

13:52. And he ordained that these days should be kept every year with
gladness.

13:53. And he fortified the mountain of the temple that was near the
castle, and he dwelt there himself, and they that were with him.

13:54. And Simon saw that John, his son, was a valiant man for war:  and
he made him captain of all the forces:  and he dwelt in Gazara.



1 Machabees Chapter 14


Demetrius is taken by the king of Persia.  Judea flourishes under the
government of Simon.

14:1. In the year one hundred and seventy-two king Demetrius assembled
his army, and went into Media to get him succours to fight against
Tryphon.

14:2. And Arsaces, the king of Persia and Media, heard that Demetrius
was entered within his borders, and he sent one of his princes to take
him alive, and bring him to him.

14:3. And he went, and defeated the army of Demetrius:  and took him,
and brought him to Arsaces, and he put him into custody.

14:4. And all the land of Juda was at rest all the days of Simon, and
he sought the good of his nation:  and his power, and his glory pleased
them well all his days.

14:5. And with all his glory he took Joppe for a haven, and made an
entrance to the isles of the sea.

14:6. And he enlarged the bounds of his nation, and made himself master
of the country.

14:7. And he gathered together a great number of captives, and had the
dominion of Gazara, and of Bethsura, and of the castle:  and took away
all uncleanness out of it, and there was none that resisted him.

14:8. And every man tilled his land with peace, and the land of Juda
yielded her increase, and the trees of the fields their fruit.

14:9. The ancient men sat all in the streets, and treated together of
the good things of the land, and the young men put on them glory, and
the robes of war.

14:10. And he provided victuals for the cities, and he appointed that
they should be furnished with ammunition, so that the fame of his glory
was renowned even to the end of the earth.

14:11. He made peace in the land, and Israel rejoiced with great joy.

14:12. And every man sat under his vine, and under his fig tree:  and
there was none to make them afraid.

14:13. There was none left in the land to fight against them:  kings
were discomfited in those days.

14:14. And he strengthened all those of his people that were brought
low, and he sought the law, and took away every unjust and wicked man.

14:15. He glorified the sanctuary, and multiplied the vessels of the
holy places.

14:16. And it was heard at Rome, and as far as Sparta, that Jonathan
was dead:  and they were very sorry.

14:17. But when they heard that Simon, his brother, was made high
priest in his place, and was possessed of all the country, and the
cities therein:

14:18. They wrote to him in tables of brass, to renew the friendship
and alliance which they had made with Judas and with Jonathan, his
brethren.

14:19. And they were read before the assembly in Jerusalem.  And this is
the copy of the letters that the Spartans sent.

14:20. The princes and the cities of the Spartans, to Simon, the high
priest, and to the ancients, and the priests, and the rest of the
people of the Jews, their brethren, greeting.

14:21. The ambassadors that were sent to our people, have told us of
your glory, and honour, and joy:  and we rejoiced at their coming.

14:22. And we registered what was said by them in the councils of the
people, in this manner:  Numenius, the son of Antiochus, and Antipater,
the son of Jason, ambassadors of the Jews, came to us to renew the
former friendship with us.

14:23. And it pleased the people to receive the men honourably, and to
put a copy of their words in the public records, to be a memorial to
the people of the Spartans.  And we have written a copy of them to
Simon, the high priest.

14:24. And after this Simon sent Numenius to Rome, with a great shield
of gold, of the weight of a thousand pounds, to confirm the league with
them.  And when the people of Rome had heard

14:25. These words, they said:  What thanks shall we give to Simon, and
his sons:

14:26. For he hath restored his brethren, and hath driven away in fight
the enemies of Israel from them:  and they decreed him liberty, and
registered it in tables of brass, and set it upon pillars in mount
Sion.

14:27. And this is a copy of the writing.  The eighteenth day of the
month Elul, in the year one hundred and seventy-two, being the third
year under Simon, the high priest, at Asaramel,

14:28. In a great assembly of the priests, and of the people, and the
princes of the nation, and the ancients of the country, these things
were notified:  Forasmuch as there have often been wars in our country,

14:29. And Simon, the son of Mathathias, of the children of Jarib, and
his brethren, have put themselves in danger, and resisted the enemies
of their nation, for the maintenance of their holy places, and the law:
and have raised their nation to great glory.

14:30. And Jonathan gathered together his nation, and was made their
high priest, and he was laid to his people.

14:31. And their enemies desired to tread down and destroy their
country, and to stretch forth their hands against their holy places.

14:32. Then Simon resisted and fought for his nation, and laid out much
of his money, and armed the valiant men of his nation, and gave them
wages.

14:33. And he fortified the cities of Judea and Bethsura that lieth in
the borders of Judea, where the armour of the enemies was before:  and
he placed there a garrison of Jews.

14:34. And he fortified Joppe, which lieth by the sea:  and Gazara,
which bordereth upon Azotus, wherein the enemies dwelt before, and he
placed Jews here:  and furnished them with all things convenient for
their reparation.

14:35. And the people seeing the acts of Simon, and to what glory he
meant to bring his nation, made him their prince and high priest,
because he had done all these things, and for the justice and faith
which he kept to his nation, and for that he sought by all means to
advance his people.

14:36. And in his days things prospered in his hands, so that the
heathens were taken away out of their country, and they also that were
in the city of David, in Jerusalem, in the castle, out of which they
issued forth, and profaned all places round about the sanctuary, and
did much evil to purity.

14:37. And he placed therein Jews for the defence of the country, and
of the city, and he raised up the walls of Jerusalem.

14:38. And king Demetrius confirmed him in the high priesthood.

14:39. According to these things he made him his friend, and glorified
him with great glory.

14:40. For he had heard that the Romans had called the Jews their
friends, and confederates, and brethren, and that they had received
Simon's ambassadors with honour:

14:41. And that the Jews, and their priests, had consented that he
should be their prince and high priest for ever, till there should
arise a faithful prophet:

14:42. And that he should be chief over them, and that he should have
the charge of the sanctuary, and that he should appoint rulers over
their works, and over the country, and over the armour, and over the
strong holds;

14:43. And that he should have care of the holy places; and that he
should be obeyed by all, and that all the writings in the country
should be made in his name; and that he should be clothed with purple
and gold:

14:44. And that it should not be lawful for any of the people, or of
the priests, to disannul any of these things, or to gainsay his words,
or to call together an assembly in the country without him:  or to be
clothed with purple, or to wear a buckle of gold.

14:45. And whosoever shall do otherwise, or shall make void any of
these things, shall be punished.

14:46. And it pleased all the people to establish Simon, and to do
according to these words.

14:47. And Simon accepted thereof, and was well pleased to execute the
office of the high priesthood, and to be captain, and prince of the
nation of the Jews, and of the priests, and to be chief over all.

14:48. And they commanded that this writing should be put in tables of
brass, and that they should be set up within the compass of the
sanctuary, in a conspicuous place:

14:49. And that a copy thereof should be put in the treasury, that
Simon, and his sons, may have it.



1 Machabees Chapter 15


Antiochus son of Demetrius honours Simon.  The Romans write to divers
nations in favour of the Jews.  Antiochus quarrels with Simon, and sends
troops to annoy him.

15:1. And king Antiochus, the son of Demetrius, sent letters from the
isles of the sea to Simon, the priest, and prince of the nation of the
Jews, and to all the people:

15:2. And the contents were these:  King Antiochus to Simon, the high
priest, and to the nation of the Jews, greeting.

15:3. Forasmuch as certain pestilent men have usurped the kingdom of
our fathers, and my purpose is to challenge the kingdom, and to restore
it to its former estate; and I have chosen a great army, and have built
ships of war.

15:4. And I design to go through the country, that I may take revenge
of them that have destroyed our country, and that have made many cities
desolate in my realm.

15:5. Now, therefore, I confirm unto thee all the oblations which all
the kings before me remitted to thee, and what other gifts soever they
remitted to thee:

15:6. And I give thee leave to coin thy own money in thy country:

15:7. And let Jerusalem be holy and free, and all the armour that hath
been made, and the fortresses which thou hast built, and which thou
keepest in thy hands, let them remain to thee.

15:8. And all that is due to the king, and what should be the king's
hereafter, from this present and for ever, is forgiven thee.

15:9. And when we shall have recovered our kingdom, we will glorify
thee, and thy nation, and the temple, with great glory, so that your
glory shall be made manifest in all the earth.

15:10. In the year one hundred and seventy-four, Antiochus entered into
the land of his fathers, and all the forces assembled to him, so that
few were left with Tryphon.

15:11. And king Antiochus pursued after him, and he fled along by the
sea coast and came to Dora.

15:12. For he perceived that evils were gathered together upon him, and
his troops had forsaken him.

15:13. And Antiochus camped above Dora with a hundred and twenty
thousand men of war, and eight thousand horsemen:

15:14. And he invested the city, and the ships drew near by sea:  and
they annoyed the city by land, and by sea, and suffered none to come
in, or to go out.

15:15. And Numenius, and they that had been with him, came from the
city of Rome, having letters written to the kings, and countries, the
contents whereof were these:

15:16. Lucius, the consul of the Romans, to king Ptolemee, greeting.

Ptolemee. . .Surnamed Physeon, brother and successor to Philometer.

15:17. The ambassadors of the Jews, our friends, came to us, to renew
the former friendship and alliance, being sent from Simon, the high
priest, and the people of the Jews.

15:18. And they brought also a shield of gold of a thousand pounds.

15:19. It hath seemed good therefore to us, to write to the kings and
countries, that they should do them no harm, nor fight against them,
their cities, or countries:  and that they should give no aid to them
that fight against them.

15:20. And it hath seemed good to us to receive the shield of them.

15:21. If, therefore, any pestilent men are fled out of their country
to you, deliver them to Simon, the high priest, that he may punish them
according to their law.

15:22. These same things were written to king Demetrius, and to
Attalus, and to Ariarathes, and to Arsaces,

Attalus, etc. . .Attalus was king of Pergamus; Ariarathes was king of
Cappadocia; and Arsaces was king of the Parthians.

15:23. And to all the countries:  and to Lampsacus and to the Spartans,
and to Delus, and Myndus, and Sicyon, and Caria, and Samus, and
Pamphylia, and Lycia, and Alicarnassus, and Cos, and Side, and Aradus,
and Rhodes, and Phaselis, and Gortyna, and Gnidus, and Cyprus, and
Cyrene.

15:24. And they wrote a copy thereof to Simon, the high priest, and to
the people of the Jews.

15:25. But king Antiochus moved his camp to Dora the second time,
assaulting it continually, and making engines:  and he shut up Tryphon,
that he could not go out.

15:26. And Simon sent to him two thousand chosen men to aid him, silver
also, and gold, and abundance of furniture.

15:27. And he would not receive them, but broke all the covenant that
he had made with him before, and alienated himself from him.

15:28. And he sent to him Athenobius, one of his friends, to treat with
him, saying:  You hold Joppe and Gazara, and the castle that is in
Jerusalem, which are cities of my kingdom:

15:29. Their borders you have wasted, and you have made great havoc in
the land, and have got the dominion of many places in my kingdom.

15:30. Now, therefore, deliver up the cities that you have taken, and
the tributes of the places whereof you have gotten the dominion without
the borders of Judea.

15:31. But if not, give me for them five hundred talents of silver, and
for the havoc that you have made, and the tributes of the cities, other
five hundred talents:  or else we will come and fight against you.

15:32. So Athenobius, the king's friend came to Jerusalem, and saw the
glory of Simon and his magnificence in gold, and silver, and his great
equipage, and he was astonished, and told him the king's words.

15:33. And Simon answered him, and said to him:  We have neither taken
other men's land, neither do we hold that which is other men's, but the
inheritance of our fathers, which was for some time unjustly possessed
by our enemies.

15:34. But we having opportunity, claim the inheritance of our fathers.

15:35. And as to thy complaints concerning Joppe and Gazara, they did
great harm to the people, and to our country:  yet for these we will
give a hundred talents.  And Athenobius answered him not a word.

15:36. But returning in a rage to the king, made report to him of these
words, and of the glory of Simon, and of all that he had seen, and the
king was exceeding angry.

15:37. And Tryphon fled away by ship to Orthosias.

15:38. And the king appointed Cendebeus captain of the sea coast, and
gave him an army of footmen and horsemen.

15:39. And he commanded him to march with his army towards Judea:  and
he commanded him to build up Gedor, and to fortify the gates of the
city, and to war against the people.  But the king himself pursued after
Tryphon.

15:40. And Cendebeus came to Jamnia, and began to provoke the people,
and to ravage Judea, and to take the people prisoners, and to kill, and
to build Gedor.

15:41. And he placed there horsemen, and an army:  that they might issue
forth, and make incursions upon the ways of Judea, as the king had
commanded him.



1 Machabees Chapter 16


The sons of Simon defeat the troops of Antiochus.  Simon with two of his
sons are treacherously murdered by Ptolemee his son in law.

16:1. Then John came up from Gazara, and told Simon, his father, what
Cendebeus had done against their people.

John. . .He was afterwards surnamed Hircanus, and succeeded his father
in both his dignities of high priest and prince.  He conquered the
Edomites, and obliged them to a conformity with the Jews in religion;
and destroyed the schismatical temple of the Samaritans.

16:2. And Simon called his two eldest sons, Judas and John, and said to
them:  I and my brethren, and my father's house, have fought against the
enemies of Israel from our youth even to this day:  and things have
prospered so well in our hands, that we have delivered Israel
oftentimes.

16:3. And now I am old, but be you instead of me, and my brethren, and
go out, and fight for our nation:  and the help from heaven be with you.

16:4. Then he chose out of the country twenty thousand fighting men,
and horsemen, and they went forth against Cendebeus:  and they rested in
Modin.

16:5. And they arose in the morning, and went into the plain:  and
behold a very great army of footmen and horsemen came against them, and
there was a running river between them.

16:6. And he and his people pitched their camp over against them, and
he saw that the people were afraid to go over the river, so he went
over first:  then the men seeing him, passed over after him.

He. . .Viz., John.

16:7. And he divided the people, and set the horsemen in the midst of
the footmen:  but the horsemen of the enemies were very numerous.

16:8. And they sounded the holy trumpets:  and Cendebeus and his army
were put to flight:  and there fell many of them wounded, and the rest
fled into the strong hold.

16:9. At that time, Judas, John's brother, was wounded:  but John
pursued after them, till he came to Cedron, which he had built:

Cedron. . .Otherwise called Gedon, the city that Cendebeus was
fortifying.

16:10. And they fled even to the towers that were in the fields of
Azotus, and he burnt them with fire.  And there fell of them two
thousand men, and he returned into Judea in peace.

16:11. Now Ptolemee, the son of Abobus, was appointed captain in the
plain of Jericho, and he had abundance of silver and gold.

16:12. For he was son in law of the high priest.

16:13. And his heart was lifted up, and he designed to make himself
master of the country, and he purposed treachery against Simon and his
sons, to destroy them.

16:14. Now Simon, as he was going through the cities that were in the
country of Judea, and taking care for the good ordering of them, went
down to Jericho, he and Mathathias and Judas, his sons, in the year one
hundred and seventy-seven, the eleventh month:  the same is the month
Sabath.

16:15. And the son of Abobus received them deceitfully into a little
fortress, that is called Doch, which he had built:  and he made them a
great feast, and hid men there.

16:16. And when Simon and his sons had drunk plentifully, Ptolemee and
his men rose up, and took their weapons, and entered into the
banqueting place, and slew him, and his two sons, and some of his
servants.

16:17. And he committed a great treachery in Israel, and rendered evil
for good.

16:18. And Ptolemee wrote these things, and sent to the king that he
should send him an army to aid him, and he would deliver him the
country, and their cities, and tributes.

16:19. And he sent others to Gazara to kill John:  and to the tribunes
he sent letters to come to him, and that he would give them silver, and
gold, and gifts.

16:20. And he sent others to take Jerusalem, and the mountain of the
temple.

16:21. Now one running before, told John in Gazara, that his father and
his brethren were slain, and that he hath sent men to kill thee also.

16:22. But when he heard it, he was exceedingly afraid:  and he
apprehended the men that came to kill him, and he put them to death:
for he knew that they sought to make him away.

16:23. And as concerning the rest of the acts of John, and his wars,
and the worthy deeds, which he bravely achieved, and the building of
the walls, which he made, and the things that he did:

16:24. Behold, these are written in the book of the days of his
priesthood, from the time that he was made high priest after his
father.




THE SECOND BOOK OF MACHABEES



This second book of MACHABEES is not a continuation of the history
contained in the first:  nor does is come down so low as the first does:
but relates many of the same facts more at large, and adds other
remarkable particulars, omitted in the first book, relating to the
state of the Jews, as well before as under the persecution of
ANTIOCHUS.  The author, who is not the same with that of the first book,
has given (as we learn from chap. 2.20, etc.) a short abstract of what
JASON of Cyrene had written in the five volumes, concerning JUDAS and
his brethren.  He wrote in Greek, and begins with two letters, sent by
the Jews of Jerusalem to their brethren in Egypt.



2 Machabees Chapter 1


Letters of the Jews of Jerusalem to them that were in Egypt.  They give
thanks for their delivery from Antiochus:  and exhort their brethren to
keep the feast of the dedication of the altar, and of the miraculous
fire.

1:1. To the brethren, the Jews that are throughout Egypt; the brethren,
the Jews that are in Jerusalem, and in the land of Judea, send health
and good peace.

1:2. May God be gracious to you, and remember his covenant that he made
with Abraham, and Isaac, and Jacob, his faithful servants:

1:3. And give you all a heart to worship him, and to do his will with a
great heart, and a willing mind.

1:4. May he open your heart in his law, and in his commandments, and
send you peace.

1:5. May he hear your prayers, and be reconciled unto you, and never
forsake you in the evil time.

1:6. And now here we are praying for you.

1:7. When Demetrius reigned, in the year one hundred and sixty-nine, we
Jews wrote to you in the trouble and violence that came upon us in
those years, after Jason withdrew himself from the holy land, and from
the kingdom.

1:8. They burnt the gate, and shed innocent blood:  then we prayed to
the Lord, and were heard, and we offered sacrifices, and fine flour,
and lighted the lamps, and set forth the loaves.

1:9. And now celebrate ye the days of Scenopegia in the month of
Casleu.

Scenopegia. . .Viz., the Encenia, or feast of the dedication of the
altar, called here Scenopegia, or feast of tabernacles, from being
celebrated with the like solemnity.

1:10. In the year one hundred and eighty-eight, the people that is at
Jerusalem, and in Judea, and the senate, and Judas, to Aristobolus, the
preceptor of king Ptolemee, who is of the stock of the anointed
priests, and to the Jews that are in Egypt, health and welfare.

1:11. Having been delivered by God out of great dangers, we give him
great thanks, forasmuch as we have been in war with such a king.

Such a king. . .Viz., Antiochus Sidetes, who began to make war upon the
Jews, whilst Simon was yet alive.  1 Mac. 15.39.  And afterwards besieged
Jerusalem under John Hircanus.  So that the Judas here mentioned, ver.
10, is not Judas Machabeus, who was dead long before the year 188 of
the kingdom of the Greeks, for he died in the year 146 of that epoch,
(see above 1 Mac. chap. 2., ver. 70, also the note on chap. 1, ver. 2,)
but either Judas the eldest son of John Hircanus, or Judas the Essene,
renowned for the gift of prophecy, who flourished about that time.

1:12. For he made numbers of men swarm out of Persia, that have fought
against us, and the holy city.

1:13. For when the leader himself was in Persia, and with him a very
great army, he fell in the temple of Nanea, being deceived by the
counsel of the priests of Nanea.

Nanea. . .A Persian goddess, which some have taken for Diana, others for
Venus.

1:14. For Antiochus, with his friends, came to the place as though he
would marry her, and that he might receive great sums of money under
the title of a dowry.

1:15. And when the priests of Nanea had set it forth, and he with a
small company had entered into the compass of the temple, they shut the
temple,

1:16. When Antiochus was come in:  and opening a secret entrance of the
temple, they cast stones and slew the leader, and them that were with
him, and hewed them in pieces; and cutting off their heads, they threw
them forth.

1:17. Blessed be God in all things, who hath delivered up the wicked.

1:18. Therefore, whereas we purpose to keep the purification of the
temple on the five and twentieth day of the month of Casleu, we thought
it necessary to signify it to you:  that you also may keep the day of
Scenopegia, and the day of the fire, that was given when Nehemias
offered sacrifice, after the temple and the altar was built.

1:19. For when our fathers were led into Persia, the priests that then
were worshippers of God, took privately the fire from the altar, and
hid it in a valley where there was a deep pit without water, and there
they kept it safe, so that the place was unknown to all men.

Persia. . .Babylonia, called here Persia, from being afterwards a part
of the Persian empire.

1:20. But when many years had passed, and it pleased God that Nehemias
should be sent by the king of Persia, he sent some of the posterity of
those priests that had hid it, to seek for the fire:  and as they told
us, they found no fire, but thick water.

1:21. Then he bade them draw it up, and bring it to him:  and the
priest, Nehemias, commanded the sacrifices that were laid on, to be
sprinkled with the same water, both the wood, and the things that were
laid upon it.

1:22. And when this was done, and the time came that the sun shone out,
which before was in a cloud, there was a great fire kindled, so that
all wondered.

1:23. And all the priests made prayer, while the sacrifice was
consuming, Jonathan beginning, and the rest answering.

1:24. And the prayer of Nehemias was after this manner:  O Lord God,
Creator of all things, dreadful and strong, just and merciful, who
alone art the good king,

1:25. Who alone art gracious, who alone art just, and almighty, and
eternal, who deliverest Israel from all evil, who didst choose the
fathers, and didst sanctify them:

1:26. Receive the sacrifice for all thy people Israel, and preserve thy
own portion, and sanctify it.

1:27. Gather together our scattered people, deliver them that are
slaves to the Gentiles, and look upon them that are despised and
abhorred:  that the Gentiles may know that thou art our God

1:28. Punish them that oppress us, and that treat us injuriously with
pride.

1:29. Establish thy people in thy holy place, as Moses hath spoken.

1:30. And the priests sung hymns till the sacrifice was consumed.

1:31. And when the sacrifice was consumed, Nehemias commanded the water
that was left to be poured out upon the great stones.

1:32. Which being done, there was kindled a flame from them:  but it was
consumed by the light that shined from the altar.

1:33. And when this matter became public, it was told to the king of
Persia, that in the place where the priests that were led away, had hid
the fire, there appeared water, with which Nehemias and they that were
with him had purified the sacrifices.

1:34. And the king considering, and diligently examining the matter,
made a temple for it, that he might prove what had happened.

A temple. . .That is, an enclosure, or a wall round about the place
where the fire was hid, to separate it from profane uses, to the end
that it might be respected as a holy place.

1:35. And when he had proved it, he gave the priests many goods, and
divers presents, and he took and distributed them to them with his own
hand.

1:36. And Nehemias called this place Nephthar, which is interpreted
purification.  But many call it Nephi.



2 Machabees Chapter 2


A continuation of the second letter.  Of Jeremias' hiding the ark at the
time of the captivity.  The author's preface.

2:1.Now it is found in the descriptions of Jeremias, the prophet, that
he commanded them that went into captivity, to take the fire, as it
hath been signified, and how he gave charge to them that were carried
away into captivity.

The descriptions. . .That is, the records or memoirs of Jeremias, a work
that is now lost.

2:2. And how he gave them the law, that they should not forget the
commandments of the Lord, and that they should not err in their minds,
seeing the idols of gold, and silver, and the ornaments of them.

2:3. And with other such like speeches, he exhorted them that they
would not remove the law from their heart.

2:4. It was also contained in the same writing, how the prophet, being
warned by God, commanded that the tabernacle and the ark should
accompany him, till he came forth to the mountain where Moses went up,
and saw the inheritance of God.

2:5. And when Jeremias came thither he found a hollow cave:  and he
carried in thither the tabernacle, and the ark, and the altar of
incense, and so stopped the door.

2:6. Then some of them that followed him, came up to mark the place:
but they could not find it.

2:7. And when Jeremias perceived it, he blamed them, saying:  The place
shall be unknown, till God gather together the congregation of the
people, and receive them to mercy.

2:8. And then the Lord will shew these things, and the majesty of the
Lord shall appear, and there shall be a cloud as it was also shewed to
Moses, and he shewed it when Solomon prayed that the place might be
sanctified to the great God.

2:9. For he treated wisdom in a magnificent manner:  and like a wise
man, he offered the sacrifice of the dedication, and of the finishing
of the temple.

2:10. And as Moses prayed to the Lord, and fire came down from heaven,
and consumed the holocaust:  so Solomon also prayed, and fire came down
from heaven and consumed the holocaust.

2:11. And Moses said:  Because the sin offering was not eaten, it was
consumed.

2:12. So Solomon also celebrated the dedication eight days.

2:13. And these same things were set down in the memoirs, and
commentaries of Nehemias:  and how he made a library, and gathered
together out of the countries, the books both of the prophets, and of
David, and the epistles of the kings, and concerning the holy gifts.

2:14. And in like manner Judas also gathered together all such things
as were lost by the war we had, and they are in our possession.

2:15. Wherefore, if you want these things, send some that may fetch
them to you.

2:16. As we are then about to celebrate the purification, we have
written unto you:  and you shall do well, if you keep the same days.

The purification. . .That is, the feast of the purifying or cleansing of
the temple.

2:17. And we hope that God, who hath delivered his people, and hath
rendered to all the inheritance, and the kingdom, and the priesthood,
and the sanctuary,

2:18. As he promised in the law, will shortly have mercy upon us, and
will gather us together from every land under heaven into the holy
place.

2:19. For he hath delivered us out of great perils, and hath cleansed
the place.

2:20. Now as concerning Judas Machabeus, and his brethren, and the
purification of the great temple, and the dedication of the altar:

2:21. As also the wars against Antiochus, the Illustrious, and his son,
Eupator:

2:22. And the manifestations that came from heaven to them, that
behaved themselves manfully on the behalf of the Jews, so that, being
but a few they made themselves masters of the whole country, and put to
flight the barbarous multitude:

2:23. And recovered again the most renowned temple in all the world,
and delivered the city, and restored the laws that were abolished, the
Lord with all clemency shewing mercy to them.

2:24. And all such things as have been comprised in five books by
Jason, of Cyrene, we have attempted to abridge in one book.

2:25. For considering the multitude of books, and the difficulty that
they find that desire to undertake the narrations of histories, because
of the multitude of the matter,

2:26. We have taken care for those indeed that are willing to read,
that it might be a pleasure of mind:  and for the studious, that they
may more easily commit to memory:  and that all that read might receive
profit.

2:27. And as to ourselves indeed, in undertaking this work of
abridging, we have taken in hand no easy task; yea, rather a business
full of watching and sweat.

No easy task, etc. . .The spirit of God, that assists the sacred penmen,
does not exempt them from labour in seeking out the matter which they
are to treat of, and the order and manner in which they are to deliver
it.  So St. Luke writ the gospel having diligently attained to all
things.  Luke 1. ver. 3.

2:28. But as they that prepare a feast, and seek to satisfy the will of
others:  for the sake of many, we willingly undergo the labour.

2:29. Leaving to the authors the exact handling of every particular,
and as for ourselves, according to the plan proposed, studying to be
brief.

2:30. For as the master builder of a new house must have care of the
whole building:  but he that taketh care to paint it, must seek out fit
things for the adorning of it:  so must it be judged of us.

2:31. For to collect all that is to be known, to put the discourse in
order, and curiously to discuss every particular point, is the duty of
the author of a history:

2:32. But to pursue brevity of speech, and to avoid nice declarations
of things, is to be granted to him that maketh an abridgment.

2:33. Here then we will begin the narration:  let this be enough by way
of a preface:  for it is a foolish thing to make a long prologue, and to
be short in the story itself.



2 Machabees Chapter 3


Heliodorus is sent by king Seleucus to take away the treasures
deposited in the temple.  He is struck by God, and healed by the prayers
of the high priest.

3:1. Therefore, when the holy city was inhabited with all peace, and
the laws as yet were very well kept, because of the godliness of Onias,
the high priest and the hatred his soul had of evil,

3:2. It came to pass that even the kings themselves and the princes
esteemed the place worthy of the highest honour, and glorified the
temple with very great gifts:

3:3. So that Seleucus, king of Asia, allowed out of his revenues all
the charges belonging to the ministry of the sacrifices.

Seleucus. . .Son of Antiochus the Great, and elder brother of Antiochus
Epiphanes.

3:4. But one Simon, of the tribe of Benjamin, who was appointed
overseer of the temple, strove in opposition to the high priest, to
bring about some unjust thing in the city.

3:5. And when he could not overcome Onias, he went to Apollonius, the
son of Tharseas, who at that time was governor of Celesyria, and
Phenicia:

3:6. And told him, that the treasury in Jerusalem was full of immense
sums of money, and the common store was infinite, which did not belong
to the account of the sacrifices:  and that it was possible to bring all
into the king's hands.

3:7. Now when Apollonius had given the king notice concerning the money
that he was told of, he called for Heliodorus, who had the charge over
his affairs, and sent him with commission to bring him the foresaid
money.

3:8. So Heliodorus forthwith began his journey, under a colour of
visiting the cities of Celesyria and Phenicia, but indeed to fulfil the
king's purpose.

3:9. And when he was come to Jerusalem, and had been courteously
received in the city by the high priest, he told him what information
had been given concerning the money:  and declared the cause for which
he was come:  and asked if these things were so indeed.

3:10. Then the high priest told him that these were sums deposited, and
provisions for the subsistence of the widows and the fatherless:

3:11. And that some part of that which wicked Simon had given
intelligence of belonged to Hircanus, son of Tobias, a man of great
dignity; and that the whole was four hundred talents of silver, and two
hundred of gold.

3:12. But that to deceive them who had trusted to the place and temple
which is honoured throughout the whole world, for the reverence and
holiness of it, was a thing which could not by any means be done.

3:13. But he, by reason of the orders he had received from the king,
said, that by all means the money must be carried to the king.

3:14. So on the day he had appointed, Heliodorus entered in to order
this matter.  But there was no small terror throughout the whole city.

3:15. And the priests prostrated themselves before the altar in their
priests' vestments, and called upon him from heaven, who made the law
concerning things given to be kept, that he would preserve them safe,
for them that had deposited them.

3:16. Now whosoever saw the countenance of the high priest, was wounded
in heart:  for his face, and the changing of his colour, declared the
inward sorrow of his mind.

3:17. For the man was so compassed with sadness and horror of the body,
that it was manifest to them that beheld him, what sorrow he had in his
heart.

3:18. Others also came flocking together out of their houses, praying
and making public supplication, because the place was like to come into
contempt.

3:19. And the women, girded with haircloth about their breasts, came
together in the streets.  And the virgins also that were shut up, came
forth, some to Onias, and some to the walls, and others looked out of
the windows.

3:20. And all holding up their hands towards heaven made supplication.

3:21. For the expectation of the mixed multitude, and of the high
priest, who was in an agony, would have moved any one to pity.

3:22. And these indeed called upon almighty God, to preserve the things
that had been committed to them safe and sure for those that had
committed them.

3:23. But Heliodorus executed that which he had resolved on, himself
being present in the same place with his guard about the treasury.

3:24. But the spirit of the Almighty God gave a great evidence of his
presence, so that all that had presumed to obey him, falling down by
the power of God, were struck with fainting and dread.

3:25. For there appeared to them a horse, with a terrible rider upon
him, adorned with a very rich covering:  and he ran fiercely and struck
Heliodorus with his fore feet, and he that sat upon him seemed to have
armour of gold.

3:26. Moreover there appeared two other young men, beautiful and
strong, bright and glorious, and in comely apparel:  who stood by him,
on either side, and scourged him without ceasing with many stripes.

3:27. And Heliodorus suddenly fell to the ground, and they took him up,
covered with great darkness, and having put him into a litter, they
carried him out.

3:28. So he that came with many servants, and all his guard, into the
aforesaid treasury, was carried out, no one being able to help him, the
manifest power of God being known.

3:29. And he indeed, by the power of God, lay speechless, and without
all hope of recovery.

3:30. But they praised the Lord, because he had glorified his place:
and the temple, that a little before was full of fear and trouble, when
the Almighty Lord appeared, was filled with joy and gladness.

3:31. Then some of the friends of Heliodorus forthwith begged of Onias,
that he would call upon the Most High to grant him his life, who was
ready to give up the ghost.

3:32. So the high priest, considering that the king might perhaps
suspect that some mischief had been done to Heliodorus by the Jews,
offered a sacrifice of health for the recovery of the man.

3:33. And when the high priest was praying, the same young men in the
same clothing stood by Heliodorus, and said to him:  Give thanks to
Onias the priest:  because for his sake the Lord hath granted thee life.

3:34. And thou having been scourged by God, declare unto all men the
great works and the power of God.  And having spoken thus, they appeared
no more.

3:35. So Heliodorus, after he had offered a sacrifice to God, and made
great vows to him, that had granted him life, and given thanks to
Onias, taking his troops with him, returned to the king.

3:36. And he testified to all men the works of the great God, which he
had seen with his own eyes.

3:37. And when the king asked Heliodorus, who might be a fit man to be
sent yet once more to Jerusalem, he said:

3:38. If thou hast any enemy, or traitor to thy king dom, send him
thither, and thou shalt receive him again scourged, if so be he escape:
for there is undoubtedly in that place a certain power of God.

3:39. For he that hath his dwelling in the heavens, is the visitor and
protector of that place, and he striketh and destroyeth them that come
to do evil to it.

3:40. And the things concerning Heliodorus, and the keeping of the
treasury, fell out in this manner.



2 Machabees Chapter 4


Onias has recourse to the king.  The ambition and wickedness of Jason
and Menelaus.  Onias is treacherously murdered.

4:1. But Simon, of whom we spoke before, who was the betrayer of the
money, and of his country, spoke ill of Onias, as though he had incited
Heliodorus to do these things, and had been the promoter of evils:

4:2. And he presumed to call him a traitor to the kingdom, who provided
for the city, and defended his nation, and was zealous for the law of
God.

4:3. But when the enmities proceeded so far, that murders also were
committed by some of Simon's friends:

4:4. Onias, considering the danger of this contention, and that
Apollonius, who was the governor of Celesyia, and Phenicia, was
outrageous, which increased the malice of Simon, went to the king,

4:5. Not to be an accuser of his countrymen, but with view to the
common good of all the people.

4:6. For he saw that, except the king took care, it was impossible that
matters should be settled in peace, or that Simon would cease from his
folly.

4:7. But after the death of Seleucus, when Antiochus, who was called
the Illustrious, had taken possession of the kingdom, Jason, the
brother of Onias, ambitiously sought the high priesthood:

4:8. And went to the king, promising him three hundred and sixty
talents of silver, and out of other revenues fourscore talents.

4:9. Besides this he promised also a hundred and fifty more, if he
might have license to set him up a place for exercise, and a place for
youth, and to entitle them that were at Jerusalem, Antiochians.

4:10. Which when the king had granted, and he had gotten the rule into
his hands, forthwith he began to bring over his countrymen to the
fashion of the heathens.

4:11. And abolishing those things, which had been decreed of special
favour by the kings in behalf of the Jews, by the means of John, the
father of that Eupolemus, who went ambassador to Rome to make amity and
alliance, he disannulled the lawful ordinances of the citizens, and
brought in fashions that were perverse.

4:12. For he had the boldness to set up, under the very castle, a place
of exercise, and to put all the choicest youths in brothel houses.

4:13. Now this was not the beginning, but an increase, and progress of
heathenish and foreign manners, through the abominable and unheard of
wickedness of Jason, that impious wretch, and no priest.

4:14. Insomuch that the priests were not now occupied about the offices
of the altar, but despising the temple and neglecting the sacrifices,
hastened to be partakers of the games, and of the unlawful allowance
thereof, and of the exercise of the discus.

4:15. And setting nought by the honours of their fathers, they esteemed
the Grecian glories for the best:

4:16. For the sake of which they incurred a dangerous contention, and
followed earnestly their ordinances, and in all things they coveted to
be like them, who were their enemies and murderers.

4:17. For acting wickedly against the laws of God doth not pass
unpunished:  but this the time following will declare.

4:18. Now when the game that was used every fifth year was kept at
Tyre, the king being present,

4:19. The wicked Jason sent from Jerusalem sinful men, to carry three
hundred didrachmas of silver for the sacrifice of Hercules; but the
bearers thereof desired it might not be bestowed on the sacrifices,
because it was not necessary, but might be deputed for other charges.

4:20. So the money was appointed by him that sent it to the sacrifice
of Hercules:  but because of them that carried it was employed for the
making of galleys.

4:21. Now when Apollonius, the son of Mnestheus was sent into Egypt to
treat with the nobles of king Philometor, and Antiochus understood that
he was wholly excluded from the affairs of the kingdom, consulting his
own interest, he departed thence and came to Joppe, and from thence to
Jerusalem.

4:22. Where he was received in a magnificent manner by Jason, and the
city, and came in with torch lights, and with praises, and from thence
he returned with his army into Phenicia.

4:23. Three years afterwards Jason sent Menelaus, brother of the
aforesaid Simon, to carry money to the king, and to bring answers from
him concerning certain necessary affairs.

4:24. But he being recommended to the king, when he had magnified the
appearance of his power, got the high priesthood for himself, by
offering more than Jason by three hundred talents of silver.

4:25. So having received the king's mandate, he returned, bringing
nothing worthy of the high priesthood:  but having the mind of a cruel
tyrant, and the rage of a savage beast.

4:26. Then Jason, who had undermined his own brother, being himself
undermined, was driven out a fugitive into the country of the
Ammonites.

4:27. So Menelaus got the principality:  but as for the money he had
promised to the king, he took no care, when Sostratus, the governor of
the castle, called for it.

4:28. For to him appertained the gathering of the taxes:  wherefore they
were both called before the king.

4:29. And Menelaus was removed from the priesthood, Lysimachus, his
brother, succeeding:  and Sostratus alas made governor of the Cyprians.

4:30. When these things were in doing, it fell out that they of
Tharsus, and Mallos, raised a sedition, because they were given for a
gift to Antiochus, the king's concubine.

4:31. The king, therefore, went in all haste to appease them, leaving
Andronicus, one of his nobles, for his deputy.

4:32. Then Menelaus supposing that he had found a convenient time,
having stolen certain vessels of gold out of the temple, gave them to
Andronicus, and others he had sold at Tyre, and in the neighbouring
cities:

4:33. Which when Onias understood most certainly, he reproved him,
keeping himself in a safe place at Antioch, beside Daphne.

4:34. Whereupon Menelaus coming to Andronicus, desired him to kill
Onias.  And he went to Onias, and gave him his right hand with an oath,
and (though he were suspected by him) persuaded him to come forth out
of the sanctuary, and immediately slew him, without any regard to
justice.

4:35. For which cause not only the Jews, but also the other nations,
conceived indignation, and were much grieved for the unjust murder of
so great a man.

4:36. And when the king was come back from the places of Cilicia, the
Jews that were at Antioch, and also the Greeks, went to him:
complaining of the unjust murder of Onias.

4:37. Antiochus, therefore, was grieved in his mind for Onias, and
being moved to pity, shed tears, remembering the sobriety and modesty
of the deceased.

4:38. And being inflamed to anger, he commanded Andronicus to be
stripped of his purple, and to be led about through all the city:  and
that in the same place wherein he had committed the impiety against
Onias, the sacrilegious wretch should be put to death, the Lord
repaying him his deserved punishment.

4:39. Now when many sacrileges had been committed by Lysimachus in the
temple, by the counsel of Menelaus, and the rumour of it was spread
abroad, the multitude gathered themselves together against Lysimachus,
a great quantity of gold being already carried away.

4:40. Wherefore the multitude making an insurrection, and their minds
being filled with anger, Lysimachus armed about three thousand men, and
began to use violence, one Tyrannus being captain, a man far gone both
in age and in madness.

4:41. But when they perceived the attempt of Lysimachus, some caught up
stones, some strong clubs, and some threw ashes upon Lysimachus.

4:42. And many of them were wounded, and some struck down to the
ground, but all were put to flight:  and as for the sacrilegious fellow
himself, they slew him beside the treasury.

4:43. Now concerning these matters, an accusation was laid against
Menelaus.

4:44. And when the king was come to Tyre, three men were sent from the
ancients to plead the cause before him.

4:45. But Menelaus being convicted, promised Ptolemee to give him much
money to persuade the king to favour him.

Ptolemee. . .The son of Dorymenus, a favourite of the king.

4:46. So Ptolemee went to the king in a certain court where he was, as
it were to cool himself, and brought him to be of another mind:

4:47. So Menelaus, who was guilty of all the evil, was acquitted by him
of the accusations:  and those poor men, who, if they had pleaded their
cause even before Scythians, should have been judged innocent, were
condemned to death.

4:48. Thus they that persecuted the cause for the city, and for the
people, and the sacred vessels, did soon suffer unjust punishment.

4:49. Wherefore even the Tyrians, being moved with indignation, were
very liberal towards their burial.

4:50. And so through the covetousness of them that were in power,
Menelaus continued in authority, increasing in malice to the betraying
of the citizens.



2 Machabees Chapter 5


Wonderful signs are seen in the air.  Jason's wickedness and end.
Antiochus takes Jerusalem, and plunders the temple.

5:1. At the same time Antiochus prepared for a second journey into
Egypt.

5:2. And it came to pass, that through the whole city of Jerusalem, for
the space of forty days, there were seen horsemen running in the air,
in gilded raiment, and armed with spears, like bands of soldiers.

5:3. And horses set in order by ranks, running one against another,
with the shakings of shields, and a multitude of men in helmets, with
drawn swords, and casting of darts, and glittering of golden armour,
and of harnesses of all sorts.

5:4. Wherefore all men prayed that these prodigies might turn to good.

5:5. Now when there was gone forth a false rumour as though Antiochus
had been dead, Jason taking with him no fewer than a thousand men,
suddenly assaulted the city:  and though the citizens ran together to
the wall, the city at length was taken, and Menelaus fled into the
castle.

5:6. But Jason slew his countrymen without mercy, not considering that
prosperity against one's own kindred is a very great evil, thinking
they had been enemies, and not citizens, whom he conquered.

5:7. Yet he did not get the principality, but received confusion at the
end, for the reward of his treachery, and fled again into the country
of the Ammonites.

5:8. At the last, having been shut up by Aretas, the king of the
Arabians, in order for his destruction, flying from city to city, hated
by all men, as a forsaker of the laws and execrable, as an enemy of his
country and countrymen, he was thrust out into Egypt:

5:9. And he that had driven many out of their country perished in a
strange land, going to Lacedemon, as if for kindred sake he should have
refuge there:

5:10. But he that had cast out many unburied, was himself cast forth
both unlamented and unburied, neither having foreign burial, nor being
partaker of the sepulchre of his fathers.

5:11. Now when these things were done, the king suspected that the Jews
would forsake the alliance:  whereupon departing out of Egypt with a
furious mind, he took the city by force of arms,

5:12. And commanded the soldiers to kill, and not to spare any that
came in their way, and to go up into the houses to slay.

5:13. Thus there was a slaughter of young and old, destruction of women
and children, and killing of virgins and infants.

5:14. And there were slain in the space of three whole days fourscore
thousand, forty thousand were made prisoners, and as many sold.

5:15. But this was not enough, he presumed also to enter into the
temple, the most holy in all the world Menelaus, that traitor to the
laws, and to his country, being his guide.

5:16. And taking in his wicked hands the holy vessels, which were given
by other kings and cities, for the ornament and the glory of the place,
he unworthily handled and profaned them.

5:17. Thus Antiochus going astray in mind, did not consider that God
was angry for a while, because of the sins of the inhabitants of the
city:  and therefore this contempt had happened to the place:

5:18. Otherwise had they not been involved in many sins, as Heliodorus,
who was sent by king Seleucus to rob the treasury, so this man also, as
soon as he had come, had been forthwith scourged, and put back from his
presumption.

5:19. But God did not choose the people for the place's sake, but the
place for the people's sake.

5:20. And, therefore, the place also itself was made partaker of the
evils of the people:  but afterwards shall communicate in the good
things thereof, and as it was forsaken in the wrath of Almighty God,
shall be exalted again with great glory, when the great Lord shall be
reconciled.

5:21. So when Antiochus had taken away out of the temple a thousand and
eight hundred talents, he went back in all haste to Antioch, thinking
through pride that he might now make the land navigable, and the sea
passable on foot:  such was the haughtiness of his mind.

5:22. He left also governors to afflict the people:  at Jerusalem,
Philip, a Phrygian by birth, but in manners more barbarous than he that
set him there:

5:23. And in Gazarim, Andronicus and Menelaus, who bore a more heavy
hand upon the citizens than the rest.

5:24. And whereas he was set against the Jews, he sent that hateful
prince, Apollonius, with an army of two and twenty thousand men,
commanding him to kill all that were of perfect age, and to sell the
women and the younger sort.

5:25. Who, when he was come to Jerusalem, pretending peace, rested till
the holy day of the sabbath:  and then the Jews keeping holiday, he
commanded his men to take arms.

5:26. And he slew all that were come forth to flee:  and running through
the city with armed men, he destroyed a very great multitude.

5:27. But Judas Machabeus, who was the tenth, had withdrawn himself
into a desert place, and there lived amongst wild beasts in the
mountains with his company:  and they continued feeding on herbs, that
they might not be partakers of the pollution.

Was the tenth. . .That is, he had nine others in his company.



2 Machabees Chapter 6


Antiochus commands the law to be abolished, sets up an idol in the
temple, and persecutes the faithful.  The martyrdom of Eleazar.

6:1. But not long after the king sent a certain old man of Antioch, to
compel the Jews to depart from the laws of their fathers and of God:

6:2. And to defile the temple that was in Jerusalem, and to call it the
temple of Jupiter Olympius:  and that in Garazim of Jupiter Hospitalis,
according as they were that inhabited the place.

That in Gazarim. . .Viz., the temple of the Samaritans.  And as they were
originally strangers, the name of Hospitalis (which signifies of or
belonging to strangers) was applicable to the idol set up in their
temple.

6:3. And very bad was this invasion of evils, and grievous to all.

6:4. For the temple was full of the riot and revellings of the
Gentiles:  and of men lying with lewd women.  And women thrust themselves
of their accord into the holy places, and brought in things that were
not lawful.

6:5. The altar also was filled with unlawful things, which were
forbidden by the laws.

6:6. And neither were the sabbaths kept, nor the solemn days of the
fathers observed, neither did any man plainly profess himself to be a
Jew.

6:7. But they were led by bitter constraint on the king's birthday to
the sacrifices:  and when the feast of Bacchus was kept, they were
compelled to go about crowned with ivy in honour of Bacchus.

6:8. And there went out a decree into the neighbouring cities of the
Gentiles, by the suggestion of the Ptolemeans, that they also should
act in like manner against the Jews, to oblige them to sacrifice:

6:9. And whosoever would not conform themselves to the ways of the
Gentiles, should be put to death:  then was misery to be seen.

6:10. For two women were accused to have circumcised their children:
whom, when they had openly led about through the city, with the infants
hanging at their breasts, they threw down headlong from the walls.

6:11. And others that had met together in caves that were near, and
were keeping the sabbath day privately, being discovered by Philip,
were burnt with fire, because they made a conscience to help themselves
with their hands, by reason of the religious observance of the day.

Philip. . .The governor of Jerusalem.

6:12. Now I beseech those that shall read this book, that they be not
shocked at these calamities, but that they consider the things that
happened, not as being for the destruction, but for the correction of
our nation.

6:13. For it is a token of great goodness, when sinners are not
suffered to go on in their ways for a long time, but are presently
punished.

6:14. For, not as with other nations, (whom the Lord patiently
expecteth, that when the day of judgment shall come, he may punish them
in the fulness of their sins:)

6:15. Doth he also deal with us, so as to suffer our sins to come to
their height, and then take vengeance on us.

6:16. And therefore he never withdraweth his mercy from us:  but though
he chastise his people with adversity he forsaketh them not.

6:17. But let this suffice in a few words for a warning to the readers.
And now we must come to the narration.

6:18. Eleazar one of the chief of the scribes, a man advanced in years,
and of a comely countenance, was pressed to open his mouth to eat
swine's flesh.

6:19. But he, choosing rather a most glorious death than a hateful
life, went forward voluntarily to the torment.

6:20. And considering in what manner he was to come to it, patiently
bearing, he determined not to do any unlawful things for the love of
life.

6:21. But they that stood by, being moved with wicked pity, for the old
friendship they had with the man, taking him aside, desired that flesh
might be brought which it was lawful for him to eat, that he might make
as if he had eaten, as the king had commanded, of the flesh of the
sacrifice:

Wicked pity. . .Their pity was wicked, inasmuch as it suggested that
wicked proposal of saving his life by dissimulation.

6:22. That by so doing he might be delivered from death; and for the
sake of their old friendship with the man, they did him this courtesy.

6:23. But he began to consider the dignity of his age, and his ancient
years, and the inbred honour of his grey head, and his good life and
conversation from a child; and he answered without delay, according to
the ordinances of the holy law made by God, saying, that he would
rather be sent into the other world.

6:24. For it doth not become our age, said he, to dissemble:  whereby
many young persons might think that Eleazar, at the age of fourscore
and ten years, was gone over to the life of the heathens:

6:25. And so they, through my dissimulation, and for a little time of a
corruptible life, should be deceived, and hereby I should bring a stain
and a curse upon my old age.

6:26. For though, for the present time, I should be delivered from the
punishments of men, yet should I not escape the hand of the Almighty
neither alive nor dead.

6:27. Wherefore, by departing manfully out of this life, I shall shew
myself worthy of my old age:

6:28. And I shall leave an example of fortitude to young men, if with a
ready mind and constancy I suffer an honourable death, for the most
venerable and most holy laws.  And having spoken thus, he was forthwith
carried to execution.

6:29. And they that led him, and had been a little before more mild,
were changed to wrath for the words he had spoken, which they thought
were uttered out of arrogancy.

6:30. But when be was now ready to die with the stripes, he groaned:
and said:  O Lord, who hast the holy knowledge, thou knowest manifestly
that whereas I might be delivered from death, I suffer grievous pains
in body:  but in soul am well content to suffer these things, because I
fear thee.

6:31. Thus did this man die, leaving not only to young men, but also to
the whole nation, the memory of his death, for an example of virtue and
fortitude.



2 Machabees Chapter 7


The glorious martyrdom of the seven brethren and their mother.

7:1. It came to pass also, that seven brethren, together with their
mother, were apprehended, and compelled by the king to eat swine's
flesh against the law, for which end they were tormented with whips and
scourges.

7:2. But one of them, who was the eldest, said thus:  What wouldst thou
ask, or learn of us?  we are ready to die, rather than to transgress the
laws of God, received from our fathers.

7:3. Then the king being angry, commanded fryingpans and brazen
caldrons to be made hot:  which forthwith being heated,

7:4. He commanded to cut out the tongue of him that had spoken first:
and the skin of his head being drawn off, to chop off also the
extremities of his hands and feet, the rest of his brethren and his
mother looking on.

7:6. And when he was now maimed in all parts, he commanded him, being
yet alive, to be brought to the fire, and to be fried in the fryingpan:
and while he was suffering therein long torments, the rest, together
with the mother, exhorted one another to die manfully,

7:6. Saying:  The Lord God will look upon the truth, and will take
pleasure in us, as Moses declared in the profession of the canticle;
And in his servants he will take pleasure.

7:7. So when the first was dead after this manner, they brought the
next to make him a mocking stock:  and when they had pulled off the skin
of his head with the hair, they asked him if he would eat, before he
were punished throughout the whole body in every limb.

7:8. But he answered in his own language, and said:  I will not do it.
Wherefore he also, in the next place, received the torments of the first:

7:9. And when he was at the last gasp, he said thus:  Thou indeed, O
most wicked man, destroyest us out of this present life:  but the King
of the world will raise us up, who die for his laws, in the
resurrection of eternal life.

7:10. After him the third was made a mocking-stock, and when he was
required, he quickly put forth his tongue, and courageously stretched
out his hands:

7:11. And said with confidence:  These I have from heaven, but for the
laws of God I now despise them, because I hope to receive them again
from him.

7:12. So that the king, and they that were with him, wondered at the
young man's courage, because he esteemed the torments as nothing.

7:13. And after he was thus dead, they tormented the fourth in the like
manner.

7:14. And when he was now ready to die, he spoke thus:  It is better,
being put to death by men, to look for hope from God, to be raised up
again by him; for, as to thee, thou shalt have no resurrection unto
life.

7:15. And when they had brought the fifth, they tormented him.  But he,
looking upon the king,

7:16. Said:  Whereas thou hast power among men though thou art
corruptible, thou dost what thou wilt but think not that our nation is
forsaken by God.

7:17. But stay patiently a while, and thou shalt see his great power,
in what manner he will torment thee and thy seed.

7:18. After him they brought the sixth, and he being ready to die,
spoke thus:  Be not deceived without cause:  for we suffer these things
for ourselves, having sinned against our God, and things worthy of
admiration are done to us:

7:19. But do not think that thou shalt escape unpunished, for that thou
hast attempted to fight against God.

7:20. Now the mother was to be admired above measure, and worthy to be
remembered by good men, who beheld her seven sons slain in the space of
one day, and bore it with a good courage, for the hope that she had in
God:

7:21. And she bravely exhorted every one of them in her own language,
being filled with wisdom; and joining a man's heart to a woman's
thought,

7:22. She said to them:  I know not how you were formed in my womb; for
I neither gave you breath, nor soul, nor life, neither did I frame the
limbs of every one of you.

7:23. But the Creator of the world, that formed the nativity of man,
and that found out the origin of all, he will restore to you again, in
his mercy, both breath and life, as now you despise yourselves for the
sake of his laws.

7:24. Now Antiochus, thinking himself despised, and withal despising
the voice of the upbraider, when the youngest was yet alive, did not
only exhort him by words, but also assured him with an oath, that he
would make him a rich and a happy man, and, if he would turn from the
laws of his fathers, would take him for a friend, and furnish him with
things necessary.

7:25. But when the young man was not moved with these things, the king
called the mother, and counselled her to deal with the young man to
save his life.

7:26. And when he had exhorted her with many words she promised that
she would counsel her son.

7:27. So bending herself towards him, mocking the cruel tyrant, she
said in her own language:  My son have pity upon me, that bore thee nine
months in my womb, and gave thee suck three years, and nourished thee,
and brought thee up unto this age.

7:28. I beseech thee, my son, look upon heaven and earth, and all that
is in them, and consider that God made them out of nothing, and mankind
also:

7:29. So thou shalt not fear this tormentor, but being made a worthy
partner with thy brethren, receive death, that in that mercy I may
receive thee again with thy brethren.

7:30. While she was yet speaking these words, the young man said:  For
whom do you stay?  I will not obey the commandment of the king, but the
commandment of the law which was given us by Moses.

7:31. But thou that hast been the author of all mischief against the
Hebrews, shalt not escape the hand of God.

7:32. For we suffer thus for our sins.

7:33. And though the Lord, our God, is angry with us a little while,
for our chastisement and correction, yet he will be reconciled again to
his servants.

7:34. But thou, O wicked, and of all men most flagitious, be not lifted
up without cause with vain hopes, whilst thou art raging against his
servants.

7:35. For thou hast not yet escaped the judgment of the Almighty God,
who beholdeth all things.

7:36. For my brethren having now undergone a short pain, are under the
covenant of eternal life:  but thou, by the judgment of God, shalt
receive just punishment for thy pride.

7:37. But I, like my brethren, offer up my life and my body for the
laws of our fathers:  calling upon God to be speedily merciful to our
nation, and that thou by torments and stripes mayst confess that he
alone is God.

7:38. But in me, and in my brethren, the wrath of the Almighty, which
hath justly been brought upon all our nation, shall cease.

7:39. Then the king being incensed with anger, raged against him more
cruelly than all the rest, taking it grievously that he was mocked.

7:40. So this man also died undefiled, wholly trusting in the Lord.

7:41. And last of all, after the sons, the mother also was consumed.

7:42. But now there is enough said of the sacrifices and of the
excessive cruelties.



2 Machabees Chapter 8


Judas Machabeus gathering an army gains divers victories.

8:1. But Judas Machabeus, and they that were with him, went privately
into the towns:  and calling together their kinsmen and friends, and
taking unto them such as continued in the Jews' religion, they
assembled six thousand men.

8:2. And they called upon the Lord, that he would look upon his people
that was trodden down by all and would have pity on the temple, that
was defiled by the wicked:

8:3. That he would have pity also upon the city that was destroyed,
that was ready to be made even with the ground, and would hear the
voice of the blood that cried to him:

8:4. That he would remember also the most unjust deaths of innocent
children, and the blasphemies offered to his name, and would shew his
indignation on this occasion.

8:5. Now when Machabeus had gathered a multitude, he could not be
withstood by the heathens:  for the wrath of the Lord was turned into
mercy.

8:6. So coming unawares upon the towns and cities, he set them on fire,
and taking possession of the most commodious places, he made no small
slaughter of the enemies:

8:7. And especially in the nights he went upon these expeditions, and
the fame of his valour was spread abroad every where.

8:8. Then Philip seeing that the man gained ground by little and
little, and that things for the most part succeeded prosperously with
him, wrote to Ptolemee, the governor of Celesyria and Phenicia, to send
aid to the king's affairs.

Philip seeing, etc. . .The governor of Jerusalem found himself unable to
contend with Judas, especially after the victories he had obtained over
Apollonius and Seron.  1 Mac. 3.

8:9. And he with all speed sent Nicanor, the son of Patroclus, one of
his special friends, giving him no fewer than twenty thousand armed men
of different nations, to root out the whole race of the Jews, joining
also with him Gorgias, a good soldier, and of great experience in
matters of war.

Twenty thousand. . .The whole number of the forces sent at that time
into Judea, was 40,000 footmen, and 7000 horsemen, 1 Mac. 3.30.  But
only 20,000 are here taken notice of, because there were no more with
Nicanor at the time of the battle.

8:10. And Nicanor purposed to raise for the king the tribute of two
thousand talents, that was to be given to the Romans, by making so much
money of the captive Jews:

8:11. Wherefore he sent immediately to the cities upon the sea coast,
to invite men together to buy up the Jewish slaves, promising that they
should have ninety slaves for one talent, not reflecting on the
vengeance which was to follow him from the Almighty.

8:12. Now when Judas found that Nicanor was coming, he imparted to the
Jews that were with him, that the enemy was at hand.

8:13. And some of them being afraid, and distrusting the justice of
God, fled away.

8:14. Others sold all that they had left, and withal besought the Lord,
that he would deliver them from the wicked Nicanor, who had sold them
before he came near them:

8:15. And if not for their sakes, yet for the covenant that he had made
with their fathers, and for the sake of his holy and glorious name that
was invoked upon them.

8:16. But Machabeus calling together seven thousand that were with him,
exhorted them not to be reconciled to the enemies, nor to fear the
multitude of the enemies who came wrongfully against them, but to fight
manfully:

Seven thousand. . .In the Greek it is six thousand.  But then three
thousand of them had no arms.  1 Mac. 4.6.

8:17. Setting before their eyes the injury they had unjustly done the
holy place, and also the injury they had done to the city, which had
been shamefully abused, besides their destroying the ordinances of the
fathers.

8:18. For, said he, they trust in their weapons, and in their boldness:
but we trust in the Almighty Lord, who at a beck can utterly destroy
both them that come against us, and the whole world.

8:19. Moreover, he put them in mind also of the helps their fathers had
received from God:  and how, under Sennacherib, a hundred and
eighty-five thousand had been destroyed.

8:20. And of the battle that they had fought against the Galatians, in
Babylonia; how they, being in all but six thousand, when it came to the
point, and the Macedonians, their companions, were at a stand, slew a
hundred and twenty thousand, because of the help they had from heaven,
and for this they received many favours.

Galatians. . .That is, the Gauls, who having ravaged Italy and Greece,
poured themselves in upon Asia, in immense multitudes, where also they
founded the kingdom of Galatia or Gallo Graecia.

8:21. With these words they were greatly encouraged and disposed even
to die for the laws and their country.

8:22. So he appointed his brethren captains over each division of his
army; Simon, and Joseph, and Jonathan, giving to each one fifteen
hundred men.

8:23. And after the holy book had been read to them by Esdras, and he
had given them for a watchword, The help of God:  himself leading the
first band, he joined battle with Nicanor:

8:24. And the Almighty being their helper, they slew above nine
thousand men:  and having wounded and disabled the greater part of
Nicanor's army, they obliged them to fly.

Above nine thousand. . .Viz., including the three thousand slain in the
pursuit.

8:25. And they took the money of them that came to buy them, and they
pursued them on every side.

8:26. But they came back for want of time:  for it was the day before
the sabbath:  and therefore they did not continue the pursuit.

8:27. But when they had gathered together their arms and their spoils,
they kept the sabbath:  blessing the Lord who had delivered them that
day, distilling the beginning of mercy upon them.

8:28. Then after the sabbath they divided the spoils to the feeble and
the orphans, and the widows, and the rest they took for themselves and
their servants.

8:29. When this was done, and they had all made a common supplication,
they besought the merciful Lord, to be reconciled to his servants unto
the end.

8:30. Moreover, they slew above twenty thousand of them that were with
Timotheus and Bacchides, who fought against them, and they made
themselves masters of the high strong holds:  and they divided amongst
them many spoils, giving equal portions to the feeble, the fatherless,
and the widows; yea, and the aged also

8:31. And when they had carefully gathered together their arms, they
laid them all up in convenient places, and the residue of their spoils
they carried to Jerusalem:

8:32. They slew also Philarches, who was with Timotheus, a wicked man,
who had many ways afflicted the Jews.

8:33. And when they kept the feast of the victory at Jerusalem, they
burnt Callisthenes, that had set fire to the holy gates, who had taken
refuge in a certain house, rendering to him a worthy reward for his
impieties:

8:34. But as for that most wicked man, Nicanor, who had brought a
thousand merchants to the sale of the Jews,

8:35. Being, through the help of the Lord, brought down by them, of
whom he had made no account, laying aside his garment of glory, fleeing
through the midland country, he came alone to Antioch, being rendered
very unhappy by the destruction of his army.

Laying aside his garment of glory. . .That is, his splendid apparel,
which he wore through ostentation; he now throws it off, lest he should
be known on his flight.

8:36. And he that had promised to levy the tribute for the Romans, by
the means of the captives of Jerusalem, now professed that the Jews had
God for their protector, and therefore they could not be hurt, because
they followed the laws appointed by him.



2 Machabees Chapter 9


The wretched end, and fruitless repentance of king Antiochus.

9:1. At that time Antiochus returned with dishonour out of Persia.

9:2. For he had entered into the city called Persepolis, and attempted
to rob the temple, and to oppress the city, but the multitude running
together to arms, put them to flight:  and so it fell out that Antiochus
being put to flight, returned with disgrace.

Persepolis. . .Otherwise called Elymais.

9:3. Now when he was come about Ecbatana, he received the news of what
had happened to Nicanor and Timotheus.

9:4. And swelling with anger, he thought to revenge upon the Jews the
injury done by them that had put him to flight.  And therefore he
commanded his chariot to be driven, without stopping in his journey,
the judgment of heaven urging him forward, because he had spoken so
proudly, that he would come to Jerusalem, and make it a common burying
place of the Jews.

9:5. But the Lord, the God of Israel, that seeth all things, struck him
with an incurable and an invisible plague.  For as soon as he had ended
these words, a dreadful pain in his bowels came upon him, and bitter
torments of the inner parts.

9:6. And indeed very justly, seeing he had tormented the bowels of
others with many and new torments, albeit he by no means ceased from
his malice.

9:7. Moreover, being filled with pride, breathing out fire in his rage
against the Jews, and commanding the matter to be hastened, it happened
as he was going with violence, that he fell from the chariot, so that
his limbs were much pained by a grievous bruising of the body.

9:8. Thus he that seemed to himself to command even the waves of the
sea, being proud above the condition of man, and to weigh the heights
of the mountains in a balance, now being cast down to the ground, was
carried in a litter, bearing witness to the manifest power of God in
himself:

9:9. So that worms swarmed out of the body of this man, and whilst he
lived in sorrow and pain, his flesh fell off, and the filthiness of his
smell was noisome to the army.

9:10. And the man that thought a little before he could reach to the
stars of heaven, no man could endure to carry, for the intolerable
stench.

9:11. And by this means, being brought from his great pride, he began
to come to the knowledge of himself, being admonished by the scourge of
God, his pains increasing every moment.

9:12. And when he himself could not now abide his own stench, he spoke
thus:  It is just to be subject to God, and that a mortal man should not
equal himself to God.

9:13. Then this wicked man prayed to the Lord, of whom he was not like
to obtain mercy.

Of whom he was not like to obtain mercy. . .Because his repentance was
not for the offence committed against God:  but barely on account of his
present sufferings.

9:14. And the city, to which he was going in haste to lay it even with
the ground, and to make it a common burying place, he now desireth to
make free:

9:15. And the Jews, whom he said he would not account worthy to be so
much as buried, but would give them up to be devoured by the birds and
wild beasts, and would utterly destroy them with their children, he now
promiseth to make equal with the Athenians.

9:16. The holy temple also, which before he had spoiled, he promised to
adorn with goodly gifts, and to multiply the holy vessels, and to allow
out of his revenues the charges pertaining to the sacrifices.

9:17. Yea also, that he would become a Jew himself, and would go
through every place of the earth, and declare the power of God.

9:18. But his pains not ceasing, (for the just judgment of God was come
upon him) despairing of life, he wrote to the Jews, in the manner of a
supplication, a letter in these words:

9:19. To his very good subjects the Jews, Antiochus, king and ruler,
wisheth much health, and welfare, and happiness.

9:20. If you and your children are well, and if all matters go with you
to your mind, we give very great thanks.

9:21. As for me, being infirm, but yet kindly remembering you,
returning out of the places of Persia, and being taken with a grievous
disease, I thought it necessary to take care for the common good:

9:22. Not distrusting my life, but having great hope to escape the
sickness.

9:23. But considering that my father also, at what time he led an army
into the higher countries, appointed who should reign after him:

9:24. To the end that if any thing contrary to expectation should fall
out, or any bad tidings should be brought, they that were in the
countries, knowing to whom the whole government was left, might not be
troubled.

9:25. Moreover, considering that neighbouring princes, and borderers,
wait for opportunities, and expect what shall be the event, I have
appointed my son, Antiochus, king, whom I often recommended to many of
you, when I went into the higher provinces:  and I have written to him
what I have joined here below.

9:26. I pray you, therefore, and request of you, that, remembering
favours both public and private, you will every man of you continue to
be faithful to me and to my son.

9:27. For I trust that he will behave with moderation and humanity, and
following my intentions, will be gracious unto you.

9:28. Thus the murderer and blasphemer being grievously struck, as
himself had treated others, died a miserable death in a strange
country, among the mountains.

9:29. But Philip, that was brought up with him, carried away his body:
and out of fear of the son of Antiochus, went into Egypt to Ptolemee
Philometor.



2 Machabees Chapter 10


The purification of the temple and city.  Other exploits of Judas.  His
victory over Timotheus.

10:1. But Machabeus, and they that were with him, by the protection of
the Lord, recovered the temple and the city again.

10:2. But he threw down the altars which the heathens had set up in the
streets, as also the temples of the idols.

10:3. And having purified the temple, they made another altar:  and
taking fire out of the fiery stones, they offered sacrifices after two
years, and set forth incense, and lamps, and the loaves of proposition.

10:4. And when they had done these things, they besought the Lord,
lying prostrate on the ground, that they might no more fall into such
evils; but if they should at any time sin, that they might be chastised
by him more gently, and not be delivered up to barbarians and
blasphemous men.

10:5. Now upon the same day that the temple had been polluted by the
strangers on the very same day it was cleansed again; to wit, on the
five and twentieth day of the month of Casleu.

10:6. And they kept eight days with joy, after the manner of the feast
of the tabernacles, remembering that not long before they had kept the
feast of the tabernacles when they were in the mountains, and in dens
like wild beasts.

10:7. Therefore they now carried boughs and green branches and palms,
for him that had given them good success in cleansing his place.

10:8. And they ordained by a common statute, and decree, that all the
nation of the Jews should keep those days every year.

10:9. And this was the end of Antiochus, that was called the
Illustrious.

10:10. But now we will repeat the acts of Eupator, the son of that
wicked Antiochus, abridging the account of the evils that happened in
the wars.

10:11. For when he was come to the crown, he appointed over the affairs
of his realm one Lysias, general of the army of Phenicia and Syria.

10:12. For Ptolemee, that was called Macer, was determined to be
strictly just to the Jews and especially by reason of the wrong that
had been done them, and to deal peaceably with them.

10:13. But being accused for this to Eupator by his friends, and being
oftentimes called traitor, because he had left Cyprus, which Philometor
had committed to him, and coming over to Antiochus the Illustrious, had
revolted also from him, he put an end to his life by poison.

10:14. But Gorgias, who was governor of the holds, taking with him the
strangers, often fought against the Jews.

10:15. And the Jews that occupied the most commodious holds, received
those that were driven out of Jerusalem, and attempted to make war.

The Jews, etc. . .He speaks of them that had fallen from their religion,
and were enemies of their country, who joining with the Idumeans or
Edomites, kept possession of the strong holds, and from thence annoyed
their countrymen.

10:16. Then they that were with Machabeus, beseeching the Lord by
prayers to be their helper, made a strong attack upon the strong holds
of the Idumeans:

10:17. And assaulting them with great force, won the holds, killed them
that came in the way, and slew altogether no fewer than twenty
thousand.

10:18. And whereas some were fled into very strong towers, having all
manner of provision to sustain a siege,

10:19. Machabeus left Simon and Joseph, and Zacheus, and them that were
with them, in sufficient number to besiege them, and departed to those
expeditions which urged more.

10:20. Now they that were with Simon, being led with covetousness, were
persuaded for the sake of money by some that were in the towers:  and
taking seventy thousand didrachmas, let some of them escape.

10:21. But when it was told Machabeus what was done, he assembled the
rulers of the people, and accused those men that they had sold their
brethren for money, having let their adversaries escape.

10:22. So he put these traitors to death, and forthwith took the two
towers.

10:23. And having good success in arms, and all things he took in hand,
he slew more than twenty thousand in the two holds.

10:24. But Timotheus, who before had been overcome by the Jews, having
called together a multitude of foreign troops, and assembled horsemen
out of Asia, came as though he would take Judea by force of arms.

10:26. But Machabeus, and they that were with him, when he drew near,
prayed to the Lord, sprinkling earth upon their heads, and girding
their loins with haircloth,

10:26. And lying prostrate at the foot of the altar, besought him to be
merciful to them, and to be an enemy to their enemies, and an adversary
to their adversaries, as the law saith.

10:27. And so after prayer taking their arms, they went forth further
from the city, and when they were come very near the enemies they
rested.

10:28. But as soon as the sun was risen both sides joined battle:  the
one part having, with their valour, the Lord for a surety of victory,
and success:  but the other side making their rage their leader in
battle.

10:29. But when they were in the heat of the engagement, there appeared
to the enemies from heaven five men upon horses, comely, with golden
bridles, conducting the Jews:

10:30. Two of them took Machabeus between them, and covered him on
every side with their arms, and kept him safe; but cast darts and
fireballs against the enemy, so that they fell down, being both
confounded with blindness, and filled with trouble.

10:31. And there were slain twenty thousand five hundred, and six
hundred horsemen.

10:32. But Timotheus fled into Gazara, a strong hold where Chereas was
governor.

10:33. Then Machabeus, and they that were with him cheerfully laid
siege to the fortress four days.

10:34. But they that were within, trusting to the strength of the
place, blasphemed exceedingly, and cast forth abominable words.

10:35. But when the fifth day appeared, twenty young men of them that
were with Machabeus, inflamed in their minds, because of the blasphemy,
approached manfully to the wall, and pushing forward with fierce
courage, got up upon it:

10:36. Moreover, others also getting up after them, went to set fire to
the towers and the gates, and to burn the blasphemers alive.

10:37. And having for two days together pillaged and sacked the
fortress, they killed Timotheus, who was found hid in a certain place:
they slew also his brother Chereas, and Apollophanes.

Timotheus. . .This man, who was killed at the taking of Gazara, is
different from that Timotheus who is mentioned in the fifth chapter of
the first book of Machabees, and of whom there is mention in the
following chapter.

10:38. And when this was done, they blessed the Lord with hymns and
thanksgiving, who had done great things in Israel, and given them the
victory.



2 Machabees Chapter 11


Lysias is overthrown by Judas.  He sues for peace.

11:1. A short time after this Lysias, the king's lieutenant, and
cousin, and who had chief charge over all the affairs, being greatly
displeased with what had happened,

11:2. Gathered together fourscore thousand men, and all the horsemen,
and came against the Jews, thinking to take the city, and make it a
habitation of the Gentiles:

11:3. And to make a gain of the temple, as of the other temples of the
Gentiles and to set the high priesthood to sale every year:

11:4. Never considering the power of God, but puffed up in mind, and
trusting in the multitude of his foot soldiers, and the thousands of
his horsemen, and his fourscore elephants.

11:5. So he came into Judea, and approaching to Bethsura, which was in
a narrow place, the space of five furlongs from Jerusalem, he laid
siege to that fortress.

11:6. But when Machabeus, and they that were with him, understood that
the strong holds were besieged, they and all the people besought the
Lord with lamentations and tears, that he would send a good angel to
save Israel.

11:7. Then Machabeus himself first taking his arms, exhorted the rest
to expose themselves together with him, to the danger, and to succour
their brethren.

11:8. And when they were going forth together with a willing mind,
there appeared at Jerusalem a horseman going before them in white
clothing, with golden armour, shaking a spear.

11:9. Then they all together blessed the merciful Lord, and took great
courage:  being ready to break through not only men, but also the
fiercest beasts, and walls of iron.

11:10. So they went on courageously, having a helper from heaven, and
the Lord, who shewed mercy to them.

11:11. And rushing violently upon the enemy, like lions, they slew of
them eleven thousand footmen, and one thousand six hundred horsemen:

11:12. And put all the rest to flight; and many of them being wounded,
escaped naked:  Yea, and Lysias himself fled away shamefully, and
escaped.

11:13. And as he was a man of understanding, considering with himself
the loss he had suffered, and perceiving that the Hebrews could not be
overcome, because they relied upon the help of the Almighty God, he
sent to them:

11:14. And promised that he would agree to all things that are just,
and that he would persuade the king to be their friend.

11:15. Then Machabeus consented to the request of Lysias, providing for
the common good in all things; and whatsoever Machabeus wrote to
Lysias, concerning the Jews, the king allowed of.

11:16. For there were letters written to the Jews from Lysias, to this
effect:  Lysias, to the people of the Jews, greeting.

11:17. John, and Abesalom, who were sent from you, delivering your
writings, requested that I would accomplish those things which were
signified by them.

11:18. Therefore whatsoever things could be reported to the king,
I have represented to him:  and he hath granted as much as the matter
permitted.

11:19. If, therefore, you will keep yourselves loyal in affairs,
hereafter also I will endeavour to be a means of your good.

11:20. But as concerning other particulars, I have given orders by word
both to these, and to them that are sent by me, to commune with you.

11:21. Fare ye well.  In the year one hundred and forty-eight, the four
and twentieth day of the month of Dioscorus.

In the year 148. . .Viz., according to the computation followed by the
Greeks; which was different from that of the Hebrews, followed by the
writer of the first book of Machabees.  However, by this date, as well
as by other circumstances, it appears that the expedition of Lysias,
mentioned in this chapter, is different from that which is recorded,
1 Mac. 6.

11:22. But the king's letter contained these words King Antiochus to
Lysias, his brother, greeting.

11:23. Our father being translated amongst the gods we are desirous
that they that are in our realm should live quietly, and apply
themselves diligently to their own concerns.

11:24. And we have heard that the Jews would not consent to my father
to turn to the rites of the Greeks but that they would keep to their
own manner of living and therefore that they request us to allow them
to live after their own laws.

11:25. Wherefore being desirous that this nation also should be at
rest, we have ordained and decreed, that the temple should be restored
to them, and that they may live according to the custom of their
ancestors.

11:26. Thou shalt do well, therefore, to send to them, and grant them
peace, that our pleasure being known, they may be of good comfort, and
look to their own affairs.

11:27. But the king's letter to the Jews was in this manner:  King
Antiochus to the senate of the Jews, and to the rest of the Jews,
greeting.

11:28. If you are well, you are as we desire:  we ourselves also are
well.

11:29. Menelaus came to us, saying that you desired to come down to
your countrymen, that are with us.

11:30. We grant, therefore, a safe conduct to all that come and go,
until the thirtieth day of the month of Xanthicus,

11:31. That the Jews may use their own kind of meats, and their own
laws, as before:  and that none of them any manner of ways be molested
for things which have been done by ignorance.

11:32. And we have sent also Menelaus to speak to you.

11:33. Fare ye well.  In the year one hundred and forty-eight, the
fifteenth day of the month of Xanthicus.

11:34. The Romans also sent them a letter, to this effect:  Quintus
Memmius, and Titus Manilius, ambassadors of the Romans, to the people
of the Jews, greeting.

11:35. Whatsoever Lysias, the king's cousin, hath granted to you, we
also have granted.

11:36. But touching such things as he thought should be referred to the
king, after you have diligently conferred among yourselves, send some
one forthwith, that we may decree as it is convenient for you:  for we
are going to Antioch.

11:37. And therefore make haste to write back, that we may know of what
mind you are.

11:38. Fare ye well.  In the year one hundred and forty-eight, the
fifteenth day of the month of Xanthicus.



2 Machabees Chapter 12


The Jews are still molested by their neighbours.  Judas gains divers
victories over them.  He orders sacrifice and prayers for the dead.

12:1. When these covenants were made, Lysias went to the king, and the
Jews gave themselves to husbandry.

12:2. But they that were behind, viz.  Timotheus, and Apollonius, the
son of Genneus, also Hieronymus, and Demophon, and besides them
Nicanor, the governor of Cyprus, would not suffer them to live in
peace, and to be quiet.

12:3. The men of Joppe also were guilty of this kind of wickedness:
they desired the Jews, who dwelt among them, to go with their wives and
children into the boats, which they had prepared, as though they had no
enmity to them.

12:4. Which when they had consented to, according to the common decree
of the city, suspecting nothing, because of the peace:  when they were
gone forth into the deep, they drowned no fewer than two hundred of
them.

12:5. But as soon as Judas heard of this cruelty done to his
countrymen, he commanded the men that were with him:  and after having
called upon God, the just judge,

12:6. He came against those murderers of his brethren, and set the
haven on fire in the night, burnt the boats, and slew with the sword
them that escaped from the fire.

12:7. And when he had done these things in this manner, he departed as
if he would return again, and root out all the Joppites.

12:8. But when he understood that the men of Jamnia also designed to do
in like manner to the Jews that dwelt among them,

12:9. He came upon the Jamnites also by night, and set the haven on
fire, with the ships, so that the light of the fire was seen at
Jerusalem, two hundred and forty furlongs off.

12:10. And when they were now gone from thence nine furlongs, and were
marching towards Timotheus, five thousand footmen, and five hundred
horsemen of the Arabians, set upon them.

12:11. And after a hard fight, in which, by the help of God, they got
the victory, the rest of the Arabians being overcome, besought Judas
for peace, promising to give him pastures, and to assist him in other
things.

12:12. And Judas thinking that they might be profitable indeed in many
things, promised them peace, and after having joined hands, they
departed to their tents.

12:13. He also laid siege to a certain strong city, encompassed with
bridges and walls, and inhabited by multitudes of different nations,
the name of which is Casphin.

12:14. But they that were within it, trusting in the strength of the
walls, and the provision of victuals, behaved in a more negligent
manner, and provoked Judas with railing and blaspheming, and uttering
such words as were not to be spoken.

12:15. But Machabeus calling upon the great Lord of the world, who
without any rams or engines of war threw down the walls of Jericho, in
the time of Josue, fiercely assaulted the walls.

Rams. . .That is, engines for battering walls, etc., which were used in
sieges in those times.

12:16. And having taken the city by the will of the Lord, he made an
unspeakable slaughter, so that a pool adjoining, of two furlongs broad,
seemed to run with the blood of the slain.

12:17. From thence they departed seven hundred and fifty furlongs, and
came to Characa, to the Jews that are called Tubianites.

12:18. But as for Timotheus, they found him not in those places, for
before he had dispatched any thing he went back, having left a very
strong garrison in a certain hold:

12:19. But Dositheus, and Sosipater, who were captains with Machabeus,
slew them that were left by Timotheus in the hold, to the number of ten
thousand men.

12:20. And Machabeus having set in order about him six thousand men,
and divided them by bands, went forth against Timotheus, who had with
him a hundred and twenty thousand footmen, and two thousand five
hundred horsemen.

12:21. Now when Timotheus had knowledge of the coming of Judas, he sent
the women and children, and the other baggage, before him into a
fortress, called Carnion:  for it was impregnable, and hard to come at,
by reason of the straitness of the places.

12:22. But when the first band of Judas came in sight, the enemies were
struck with fear, by the presence of God, who seeth all things, and
they were put to flight one from another, so that they were often
thrown down by their own companions, and wounded with the strokes of
their own swords.

12:23. But Judas pursued them close, punishing the profane, of whom he
slew thirty thousand men.

12:24. And Timotheus himself fell into the hands of the band of
Dositheus and Sosipater, and with many prayers he besought them to let
him go with his life, because he had the parents and brethren of many
of the Jews, who, by his death, might happen to be deceived.

12:25. And when he had given his faith that he would restore them
according to the agreement, they let him go without hurt, for the
saving of their brethren.

12:26. Then Judas went away to Carnion, where he slew five and twenty
thousand persons.

12:27. And after he had put to flight and destroyed these, he removed
his army to Ephron, a strong city, wherein there dwelt a multitude of
divers nations:  and stout young men standing upon the walls, made a
vigorous resistance:  and in this place there were many engines of war,
and a provision of darts.

12:28. But when they had invocated the Almighty, who with his power
breaketh the strength of the enemies, they took the city:  and slew five
and twenty thousand of them that were within.

12:29. From thence they departed to Scythopolis, which lieth six
hundred furlongs from Jerusalem.

Scythopolis. . .Formerly called Bethsan.

12:30. But the Jews that were among the Scythopolitans testifying that
they were used kindly by them, and that even in the times of their
adversity they had treated them with humanity:

12:31. They gave them thanks, exhorting them to be still friendly to
their nation, and so they came to Jerusalem, the feast of the weeks
being at hand.

12:32. And after Pentecost they marched against Gorgias, the governor
of Idumea.

12:33. And he came out with three thousand footmen and four hundred
horsemen.

12:34. And when they had joined battle, it happened that a few of the
Jews were slain.

12:35. But Dositheus, a horseman, one of Bacenor's band, a valiant man,
took hold of Gorgias:  and when he would have taken him alive, a certain
horseman of the Thracians came upon him, and cut off his shoulder:  and
so Gorgias escaped to Maresa.

12:36. But when they that were with Esdrin had fought long, and were
weary, Judas called upon the Lord to be their helper, and leader of the
battle:

12:37. Then beginning in his own language, and singing hymns with a
loud voice, he put Gorgias's soldiers to flight.

12:38. So Judas having gathered together his army, came into the city
Odollam:  and when the seventh day came, they purified themselves
according to the custom, and kept the sabbath in the same place.

12:39. And the day following Judas came with his company, to take away
the bodies of them that were slain, and to bury them with their
kinsmen, in the sepulchres of their fathers.

12:40. And they found under the coats of the slain, some of the
donaries of the idols of Jamnia, which the law forbiddeth to the Jews:
so that all plainly saw, that for this cause they were slain.

Of the donaries, etc. . .That is, of the votive offerings, which had
been hung up in the temples of the idols, which they had taken away
when they burnt the port of Jamnia, ver. 9., contrary to the
prohibition of the law, Deut. 7.25.

12:41. Then they all blessed the just judgment of the Lord, who had
discovered the things that were hidden.

12:42. And so betaking themselves to prayers, they besought him, that
the sin which had been committed might be forgotten.  But the most
valiant Judas exhorted the people to keep themselves from sin,
forasmuch as they saw before their eyes what had happened, because of
the sins of those that were slain.

12:43. And making a gathering, he sent twelve thousand drachms of
silver to Jerusalem for sacrifice to be offered for the sins of the
dead, thinking well and religiously concerning the resurrection.

12:44. (For if he had not hoped that they that were slain should rise
again, it would have seemed superfluous and vain to pray for the dead,)

12:45. And because he considered that they who had fallen asleep with
godliness, had great grace laid up for them.

With godliness. . .Judas hoped that these men who died fighting for the
cause of God and religion, might find mercy:  either because they might
be excused from mortal sin by ignorance; or might have repented of
their sin, at least at their death.

12:46. It is therefore a holy and wholesome thought to pray for the
dead, that they may be loosed from sins.

It is therefore a holy and wholesome thought to pray for the
dead. . .Here is an evident and undeniable proof of the practice of
praying for the dead under the old law, which was then strictly observed
by the Jews, and consequently could not be introduced at that time by
Judas, their chief and high priest, if it had not been always their
custom.



2 Machabees Chapter 13


Antiochus and Lysias again invade Judea.  Menelaus is put to death.  The
king's great army is worsted twice.  The peace is renewed.

13:1. In the year one hundred and forty-nine, Judas understood that
Antiochus Eupator was coming with a multitude against Judea,

13:2. And with him Lysias, the regent, who had charge over the affairs
of the realm, having with him a hundred and ten thousand footmen, five
thousand horsemen, twenty-two elephants, and three hundred chariots.

A hundred and ten thousand, etc. . .The difference between the numbers
here set down, and those recorded, 1 Mac. 4, is easily accounted for;
if we consider that such armies as these are liable to be at one time
more numerous than at another; either by sending away large
detachments, or being diminished by sickness; or increased by receiving
fresh supplies of troops, according to different exigencies or
occurrences.

13:3. Menelaus also joined himself with them:  and with great
deceitfulness besought Antiochus, not for the welfare of his country,
but in hopes that he should be appointed chief ruler.

13:4. But the King of kings stirred up the mind of Antiochus against
the sinner, and upon Lysias suggesting that he was the cause of all the
evils, he commanded (as the custom is with them) that he should be
apprehended and put to death in the same place.

13:5. Now there was in that place a tower fifty cubits high, having a
heap of ashes on every side:  this had a prospect steep down.

13:6. From thence he commanded the sacrilegious wretch to be thrown
down into the ashes, all men thrusting him forward unto death.

13:7. And by such a law it happened that Menelaus the transgressor of
the law, was put to death:  not having so much as burial in the earth.

13:8. And indeed very justly, for insomuch as he had committed many
sins against the altar of God, the fire and ashes of which were holy:
he was condemned to die in ashes.

13:9. But the king, with his mind full of rage, came on to shew himself
worse to the Jews than his father was.

13:10. Which when Judas understood, he commanded the people to call
upon the Lord day and night, that as he had always done, so now also he
would help them:

13:11. Because they were afraid to be deprived of the law, and of their
country, and of the holy temple:  and that he would not suffer the
people, that had of late taken breath for a little while, to be again
in subjection to blasphemous nations.

13:12. So when they had all done this together, and had craved mercy of
the Lord with weeping and fasting, lying prostrate on the ground for
three days continually, Judas exhorted them to make themselves ready.

13:13. But he, with the ancients, determined before the king should
bring his army into Judea, and make himself master of the city, to go
out, and to commit the event of the thing to the judgment of the Lord.

13:14. So committing all to God, the Creator of the world, and having
exhorted his people to fight manfully, and to stand up even to death
for the laws, the temple, the city, their country, and citizens:  he
placed his army about Modin.

13:15. And having given his company for a watchword, The victory of
God, with most valiant chosen young men, he set upon the king's quarter
by night, and slew four thousand men in the camp, and the greatest of
the elephants, with them that had been upon him,

13:16. And having filled the camp of the enemies with exceeding great
fear and tumult, they went off with good success.

13:17. Now this was done at the break of day, by the protection and
help of the Lord.

13:18. But the king having taken a taste of the hardiness of the Jews,
attempted to take the strong places by policy:

13:19. And he marched with his army to Bethsura, which was a strong
hold of the Jews:  but he was repulsed, he failed, he lost his men.

13:20. Now Judas sent necessaries to them that were within

13:21. But Rhodocus, one of the Jews' army, disclosed the secrets to
the enemies, so he was sought out, and taken up, and put in prison.

13:22. Again the king treated with them that were in Bethsura:  gave his
right hand:  took theirs:  and went away.

13:23. He fought with Judas:  and was overcome.  And when he understood
that Philip, who had been left over the affairs, had rebelled at
Antioch, he was in a consternation of mind, and entreating the Jews,
and yielding to them, he swore to all things that seemed reasonable,
and, being reconciled, offered sacrifice, honoured the temple, and left
gifts.

13:24. He embraced Machabeus, and made him governor and prince from
Ptolemais unto the Gerrenians.

13:25. But when he was come to Ptolemais, the men of that city were
much displeased with the conditions of the peace, being angry for fear
they should break the covenant.

13:26. Then Lysias went up to the judgment seat, and set forth the
reason, and appeased the people, and returned to Antioch:  and thus
matters went with regard to the king's coming and his return.



2 Machabees Chapter 14


Demetrius challenges the kingdom.  Alcimus applies to him to be made
high priest:  Nicanor is sent into Judea:  his dealings with Judas:  his
threats.  The history of Razias.

14:1. But after the space of three years Judas, and they that were with
him, understood that Demetrius, the son of Seleucus, was come up with a
great power, and a navy by the haven of Tripolis, to places proper for
his purpose,

14:2. And had made himself master of the countries against Antiochus,
and his general, Lysias.

14:3. Now one Alcimus, who had been chief priest, but had wilfully
defiled himself in the time of mingling with the heathens, seeing that
there was no safety for him, nor access to the altar,

Now Alcimus, who had been chief priest. . .This Alcimus was of the stock
of Aaron, but for his apostasy here mentioned was incapable of the high
priesthood, but king Antiochus Eupator appointed him in place of the
high priest, (see above, 1 Mac. chap. 7., ver. 9,) as Menelaus had been
before him, set up by Antiochus (above chap. 4.), yet neither of them
were truly high priests; for the true high priesthood was amongst the
Machabees, who were also of the stock of Aaron, and had strictly held
their religion, and were ordained according to the rites commanded in
the law of Moses.--Ibid.  Mingling. . .with the heathens; that is, in
their idolatrous worship.

14:4. Came to king Demetrius in the year one hundred and fifty,
presenting unto him a crown of gold, and a palm, and besides these,
some boughs that seemed to belong to the temple.  And that day indeed he
held his peace.

14:5. But having gotten a convenient time to further his madness, being
called to counsel by Demetrius, and asked what the Jews relied upon,
and what were their counsels,

14:6. He answered thereunto:  They among the Jews that are called
Assideans, of whom Judas Machabeus is captain, nourish wars, and raise
seditions, and will not suffer the realm to be in peace.

14:7. For I also being deprived of my ancestor's glory (I mean of the
high priesthood) am now come hither:

14:8. Principally indeed out of fidelity to the king's interests, but
in the next place also to provide for the good of my countrymen:  for
all our nation suffereth much from the evil proceedings of these men.

14:9. Wherefore, O king, seeing thou knowest all these things, take
care, I beseech thee, both of the country, and of our nation, according
to thy humanity which is known to all men.

14:10. For as long as Judas liveth it is not possible that the state
should be quiet.

14:11. Now when this man had spoken to this effect the rest also of the
king's friends, who were enemies of Judas, incensed Demetrius against
him.

14:12. And forthwith he sent Nicanor, the commander over the elephants,
governor into Judea:

14:13. Giving him in charge, to take Judas himself:  and disperse all
them that were with him, and to make Alcimus the high priest of the
great temple.

14:14. Then the Gentiles who had fled out of Judea, from Judas, came to
Nicanor by flocks, thinking the miseries and calamities of the Jews to
be the welfare of their affairs.

14:15. Now when the Jews heard of Nicanor's coming, and that the
nations were assembled against them, they cast earth upon their heads,
and made supplication to him who chose his people to keep them for
ever, and who protected his portion by evident signs.

14:16. Then at the commandment of their captain, they forthwith removed
from the place where they were, and went to the town of Dessau, to meet
them.

14:17. Now Simon, the brother of Judas, had joined battle with Nicanor:
but was frightened with the sudden coming of the adversaries.

14:18. Nevertheless Nicanor hearing of the valour of Judas's
companions, and the greatness of courage, with which they fought for
their country, was afraid to try the matter by the sword.

14:19. Wherefore he sent Posidonius, and Theodotius and Matthias before
to present and receive the right hands.

14:20. And when there had been a consultation thereupon, and the
captain had acquainted the multitude with it, they were all of one mind
to consent to covenants.

14:21. So they appointed a day upon which they might come together by
themselves:  and seats were brought out, and set for each one.

14:22. But Judas ordered armed men to be ready in convenient places,
lest some mischief might be suddenly practised by the enemies:  so they
made an agreeable conference.

14:23. And Nicanor abode in Jerusalem, and did no wrong, but sent away
the flocks of the multitudes that had been gathered together.

14:24. And Judas was always dear to him from the heart, and he was well
affected to the man.

14:25. And he desired him to marry a wife, and to have children.  So he
married:  he lived quietly, and they lived in common.

14:26. But Alcimus seeing the love they had one to another, and the
covenants, came to Demetrius, and told him that Nicanor had assented to
the foreign interest, for that he meant to make Judas, who was a
traitor to the kingdom, his successor.

14:27. Then the king, being in a rage, and provoked with this man's
wicked accusation, wrote to Nicanor, signifying that he was greatly
displeased with the covenant of friendship:  and that he commanded him
nevertheless to send Machabeus prisoner in all haste to Antioch.

14:28. When this was known, Nicanor was in a consternation, and took it
grievously that he should make void the articles that were agreed upon,
having received no injury from the man.

14:29. But because he could not oppose the king, he watched an
opportunity to comply with the orders

14:30. But when Machabeus perceived that Nicanor was more stern to him,
and that when they met together as usual he behaved himself in a rough
manner; and was sensible that this rough behaviour came not of good, he
gathered together a few of his men, and hid himself from Nicanor.

14:31. But he finding himself notably prevented by the man, came to the
great and holy temple:  and commanded the priests that were offering the
accustomed sacrifices, to deliver him the man.

14:32. And when they swore unto him, that they knew not where the man
was whom he sought, he stretched out his hand to the temple,

14:33. And swore, saying:  Unless you deliver Judas prisoner to me, I
will lay this temple of God even with the ground, and will beat down
the altar, and I will dedicate this temple to Bacchus.

14:34. And when he had spoken thus, he departed.  But the priests
stretching forth their hands to heaven, called upon him that was ever
the defender of their nation, saying in this manner:

14:35. Thou, O Lord of all things, who wantest nothing, wast pleased
that the temple of thy habitation should be amongst us.

14:36. Therefore now, O Lord, the holy of all holies, keep this house
for ever undefiled, which was lately cleansed.

14:37. Now Razias, one of the ancients of Jerusalem, was accused to
Nicanor, a man that was a lover of the city, and of good report, who
for his kindness was called the father of the Jews.

14:38. This man, for a long time, had held fast his purpose of keeping
himself pure in the Jews' religion, and was ready to expose his body
and life, that he might persevere therein.

14:39. So Nicanor being willing to declare the hatred that he bore the
Jews, sent five hundred soldiers to take him.

14:40. For he thought by ensnaring him to hurt the Jews very much.

14:41. Now as the multitude sought to rush into his house, and to break
open the door, and to set fire to it, when he was ready to be taken, he
struck himself with his sword:

He struck himself, etc. . .St. Augustine, (Epist. 61, ad Dulcitium, et
lib. 2, cap. 23, ad Epist. 2, Gaud.) discussing this fact of Razias,
says, that the holy scripture relates it, but doth not praise it, as to
be admired or imitated, and that either it was not well done by him, or
at least not proper in this time of grace.

14:42. Choosing to die nobly rather than to fall into the hands of the
wicked, and to suffer abuses unbecoming his noble birth.

14:43. But whereas through haste he missed of giving a sure wound, and
the crowd was breaking into the doors, he ran boldly to the wall, and
manfully threw himself down to the crowd:

14:44. But they quickly making room for his fall, he came upon the
midst of the neck.

He came upon the midst of the neck. . .Venit per mediam cervicem.  In the
Greek it is keneona, which signifies a void place, where there is no
building.

14:45. And as he had yet breath in him, being inflamed in mind, he
arose:  and while his blood ran down with a great stream, and he was
grievously wounded, he ran through the crowd:

14:46. And standing upon a steep rock, when he was now almost without
blood, grasping his bowels, with both hands he cast them upon the
throng, calling upon the Lord of life and spirit, to restore these to
him again:  and so he departed this life.



2 Machabees Chapter 15


Judas encouraged by a vision gains a glorious victory over Nicanor.  The
conclusion.

15:1. But when Nicanor understood that Judas was in the places of
Samaria, he purposed to set upon him with all violence, on the sabbath
day.

15:2. And when the Jews that were constrained to follow him, said:  Do
not act so fiercely and barbarously, but give honour to the day that is
sanctified:  and reverence him that beholdeth all things:

15:3. That unhappy man asked, if there were a mighty One in heaven,
that had commanded the sabbath day to be kept.

15:4. And when they answered:  There is the living Lord himself in
heaven, the mighty One, that commanded the seventh day to be kept.

15:5. Then he said:  And I am mighty upon the earth, and I command to
take arms, and to do the king's business.  Nevertheless he prevailed not
to accomplish his design.

15:6. So Nicanor being puffed up with exceeding great pride, thought to
set up a public monument of his victory over Judas.

15:7. But Machabeus ever trusted with all hope that God would help
them.

15:8. And he exhorted his people not to fear the coming of the nations,
but to remember the help they had before received from heaven, and now
to hope for victory from the Almighty.

15:9. And speaking to them out of the law, and the prophets, and withal
putting them in mind of the battles they had fought before, he made
them more cheerful:

15:10. Then after he had encouraged them, he shewed withal the
falsehood of the Gentiles, and their breach of oaths.

15:11. So he armed every one of them, not with defence of shield and
spear, but with very good speeches, and exhortations, and told them a
dream worthy to be believed, whereby he rejoiced them all.

15:12. Now the vision was in this manner.  Onias, who had been high
priest, a good and virtuous man, modest in his looks, gentle in his
manners, and graceful in speech, and who from a child was exercised in
virtues holding up his hands, prayed for all the people of the Jews:

15:13. After this there appeared also another man, admirable for age,
and glory, and environed with great beauty and majesty:

15:14. Then Onias answering, said:  This is a lover of his brethren, and
of the people of Israel:  this is he that prayeth much for the people,
and for all the holy city, Jeremias, the prophet of God.

15:15. Whereupon Jeremias stretched forth his right hand, and gave to
Judas a sword of gold, saying:

15:16. Take this holy sword, a gift from God, wherewith thou shalt
overthrow the adversaries of my people Israel.

15:17. Thus being exhorted with the words of Judas, which were very
good, and proper to stir up the courage, and strengthen the hearts of
the young men, they resolved to fight, and to set upon them manfully:
that valour might decide the matter, because the holy city, and the
temple were in danger.

15:18. For their concern was less for their wives, and children, and
for their brethren, and kinsfolks:  but their greatest and principal
fear was for the holiness of the temple.

15:19. And they also that were in the city, had no little concern for
them that were to be engaged in battle.

15:20. And now when all expected what judgment would be given, and the
enemies were at hand, and the army was set in array, the beasts and the
horsemen ranged in convenient places,

15:21. Machabeus considering the coming of the multitude, and the
divers preparations of armour, and the fierceness of the beasts,
stretching out his hands to heaven, called upon the Lord, that worketh
wonders, who giveth victory to them that are worthy, not according to
the power of their arms, but according as it seemeth good to him.

15:22. And in his prayer he said after this manner:  Thou, O Lord, who
didst send thy angel in the time of Ezechias, king of Juda, and didst
kill a hundred and eighty-five thousand of the army of Sennacherib:

15:23. Send now also, O Lord of heaven, thy good angel before us, for
the fear and dread of the greatness of thy arm,

15:24. That they may be afraid, who come with blasphemy against thy
holy people.  And thus he concluded his prayer.

15:25. But Nicanor, and they that were with him came forward, with
trumpets and songs.

15:26. But Judas, and they that were with him, encountered them,
calling upon God by prayers:

15:27. So fighting with their hands, but praying to the Lord with their
hearts, they slew no less than five and thirty thousand, being greatly
cheered with the presence of God.

15:28. And when the battle was over, and they were returning with joy,
they understood that Nicanor was slain in his armour.

15:29. Then making a shout, and a great noise, they blessed the
Almighty Lord in their own language.

15:30. And Judas, who was altogether ready, in body and mind, to die
for his countrymen, commanded that Nicanor's head, and his hand, with
the shoulder, should be cut off, and carried to Jerusalem.

15:31. And when he was come thither, having called together his
countrymen, and the priests to the altar, he sent also for them that
were in the castle,

15:32. And shewing them the head of Nicanor, and the wicked hand, which
he had stretched out, with proud boasts, against the holy house of the
Almighty God,

15:33. He commanded also, that the tongue of the wicked Nicanor should
be cut out, and given by pieces to birds, and the hand of the furious
man to be hanged up over against the temple.

15:34. Then all blessed the Lord of heaven, saying:  Blessed be he that
hath kept his own place undefiled.

15:35. And he hung up Nicanor's head in the top of the castle, that it
might be an evident and manifest sign of the help of God.

15:36. And they all ordained by a common decree, by no means to let
this day pass without solemnity:

15:37. But to celebrate the thirteenth day of the month of Adar, called
in the Syrian language, the day before Mardochias' day.

15:38. So these things being done with relation to Nicanor, and from
that time the city being possessed by the Hebrews, I also will here
make an end of my narration.

15:39. Which if I have done well, and as it becometh the history, it is
what I desired:  but if not so perfectly, it must be pardoned me.

If not so perfectly, etc. . .This is not said with regard to the truth
of the narration; but with regard to the style and manner of writing:
which in the sacred penmen is not always the most accurate.  See St.
Paul, 2 Cor. 11.6.

15:40. For as it is hurtful to drink always wine, or always water, but
pleasant to use sometimes the one, and sometimes the other:  so if the
speech be always nicely framed, it will not be grateful to the readers.
But here it shall be ended.





APPENDICES



These texts come from the 1610 Doway printing of the second tome of the
Old Testament (see the 'History' section at the top of the e-text).  The
primary sources provide a glimpse both into the history of the Douay-
Rheims version and the English language itself.  The reader will quickly
notice that the letter 'j' does not appear in the texts, rather 'i'
functions either as a vowel or a consonant.  Likewise 'u' is not a
distinct letter; it is employed typographically in the lower-case in
place of 'v' where not starting a word.  The letters 'u' and 'v' both
function either as vowels or consonants.  The word 'vniuersity'
demonstrates this rule.  The letter 'w' is often employed, but in some
cases the earlier form of a double-v (vv) appears instead.

The transcriber has done his best to render the text accurately.  Note
the relaxed spelling standards of the time; many variants appear.  While
the errata section from the 1610 edition observed:  "We haue also found
some other faultes of lesse importance; and feare there be more.  But we
trust the reader may easely correct them, as they occurre." only obvious
errors have been amended.  Where the transcriber has doubt between
whether an irregular spelling is either an error and a variant, the
printed text stands.  7-bit ASCII cannot fully represent the
typographical standards of the sixteenth and seventeenth centuries, and
many special characters have been replaced with modern equivalents.
Where verse numbers stand in the margins of the printed texts, they have
been transferred to the body; the verse numbers in the 'Prayer of
Manasses' have been supplied from other versions.  Reference notes have
been transferred from the margins, and their abbreviations modernized.





ADDITIONAL BOOKS



The prayer of Manasses, vvith the third & fourth Bookes of Esdras, extant
in most Latin and vulgare Bibles, are here placed after al the Canonical
bookes, of the old Testament:  because they are not receiued into the
Canon of Diuine Scriptures by the Catholique Church.




THE PRAYER OF MANASSES KING OF IVDA, WHEN HE WAS HELD CAPTIVE IN BABYLON.



LORD omnipotent God of our fathers, Abraham, & Isaac, and Iacob, and of
their iust sede, (2 Par 33:12) [2] which didst make heauen and earth:
with al the ornamentes of them, [3] which hast bound the sea with the
word of thy precept, which hast shut vp the depth, and sealed it with
thy terrible and laudable name:  [4] whom al thinges dread, & tremble at
the countinance of thy powre, [5] because the magnificence of thy glorie
is importable, & the wrath of thy threatning vpon sinners is
intollerable:  [6] but the mercie of thy promise is infinite and
vnsearchable:  [7] because thou art our Lord, most high, benigne, long
suffering, and very merciful, and penitent vpon the wickednes of men.
Thou Lord according to the multitude of thy goodnes hast promised
penance, and remission to them that haue sinned to thee, and by the
multitude of thy mercies thou hast decreed penance to sinners, vnto
saluation.  [8] Thou therfore Lord God of the iust, hast not appointed
penance to the iust, Abraham, & Isaac and Iacob, them that haue not
sinned to thee, but hast appointed penance for me a sinner:  [9] because
I haue sinned aboue the number of the sand of the sea.  Myne iniquities
Lord be multiplied, mine iniquities be multiplied, and I am not worthie
to behold, & looke vpon the height of heauen, for the multitude of mine
iniquities.  [10] I am made crooked with manie a band of yron, that I can
not lift vp my head, and I haue not respiration:  because I haue stirred
vp thy wrath, and haue done euil before thee:  I haue not done thy wil,
and thy commandmentes I haue not kept:  I haue set vp abominations, and
multiplied offenses.  [11] And now I bowe the knee of my hart, beseeching
goodnes of thee.  [12] I haue sinned Lord, I haue sinned, & I acknowlege
myne iniquities.  [13] Wherefore I beseech disiring thee, forgeue me
Lord, forgeue me:  and destroy me not together with myne iniquities,
neither reserue thou for euer, being angrie, euils for me, neither damme
me into the lowest places of the earth:  because thou art Lord, God, I
say, of the penitent:  [14] in me thou shalt shew al thy goodnes because
thou shalt saue me vnworthie according to thy great mercie, [15] and I
wil prayse thee alwayes al the dayes of my life:  because al the power of
the heauens prayseth thee, and to thee is glorie for euer and euer.
Amen.




THE THIRD BOOKE OF ESDRAS.



For helpe of the readers, especially such as haue not leysure to read al,
vve haue gathered the contentes of the chapters; but made no Annotations:
because the text it self is but as a Commentarie to the Canonical bookes;
and therfore we haue only added the concordance of other Scriptures in
the margin.



CHAP. I.


Iosias king of Iuda maketh a great Pasch, 7. geuing manie hostes to such
as wanted for sacrifice:  14. the Priestes and Leuites performing their
functions therin:  22. in the eightenth yeare of his reigne, 25. He is
slayne in battel by the king of AEgypt, 32. and much lamented by the
Iewes.  34. His sonne Ieconias succedeth.  37. After him Ioacim, 40. who
is deposed by the king of Babylon.  43. Ioachim reigneth three monethes,
and is caried into Babylon.  46. Sedecias reigneth eleuen yeares
wickedly.  52. and he with his people is caried captiue into Babylon, the
citie and temple are destroyed.  57. so remayned til the Monarchie of the
Persians.

AND Iosias made a Pasch in Ierusalem to our Lord & immolated the Phase
the fourtenth moone of the moneth:  (4 Kings 23:21 / 2 Par 35:1)
2 appointing the Priestes by courses of dayes clothed with stoles in the
temple of our Lord.  3 And he spake to the Leuites the sacred seruantes
of Isreal, that they should sanctifie them selues to our Lord in the
placing of the holie arke of our Lord in the house, which king Salomon
sonne of Dauid built.  4 It shal not be for you to take it vpon your
shoulders.  And now serue your Lord, and take the care of that nation
Israel, in part according to your villages and tribes, 5 according to the
writing of Dauid king of Israel, and according to the magnificence of
Salomon his sonne, al in the temple, and according to your fathers
portion of principalitie, among them that stand in the sight of your
brethren the children of Isreal.  6 Immolate the Pasch, and prepare the
sacrifices for your bretheren, and doe according to the precept of our
Lord which was geuen to Moyses.  (Ex 12 / Lev 23 / Num 28)  7 And Iosias
gaue vnto the people that was found of sheepe, lambes, and kiddes, and
goates thirtie thousand, calues there thousand.  8 These thinges were
geuen to the people of the kinges goodes according to promisse:  and to
the priestes for the Phase, sheepe in number two thousand, and calues an
hundred.  9 And Iechonias, and Semeias, and Nathanael bretheren, and
Hasabias, and Oziel, and Coraba for the Phase sheepe fiue thousand,
calues fiue hundred.  10 And when these thinges were done in good order,
the Priestes an the Leuites stood hauing azymes by tribes.  11 And
according to the portions of their fathers principalitie, in the sight of
the people they did offer, to our Lord according to those thinges, which
were written in the booke of Moyses:  12 and rosted the Phase with fire
as it ought:  and the hostes they boyled in cauldrons, and in pottes with
beneuolence:  13 and they brought to al that were of the people:  and
afterward they prepared for them selues and the priestes.  14 For the
Priestes offered the fatte, vntil the houre was ended:  and the Leuites
prepared for them selues, and their brethren, the children of Aaron.
15 And the sacred singing men, the children of Asaph were by order
according to the precept of Dauid and Asaph, and Zacharias, and Ieddimus,
which was from the king.  16 And the porters at euerie gate, so that none
transgressed his owne:  for their brethren prepared for them.  17 And the
thinges were consummate that perteyned to the sacrifice of our Lord.
18 In that day they celebrated the Phase, and offered hostes vpon the
sacrifice of our Lord, according to the precept of king Iosias.  19 And
the children of Israel, that were found at that time, celebrated the
Phase:  and the festiual day of Azymes for seuen dayes:  20 and there was
not celebrated such a Phase in Isreal, from the times of Samuel the
prophet:  21 and al the kinges of Israel did not celebrate such a Phase
as Iosias did, and the Priestes, and the Leuites, and the Iewes, and al
Israel, that were found in their abode at Ierusalem.  22 In the eightenth
yeare, Iosias reigning was the Phase celebrated.  23 And the workes of
Iosias were directed in the sight of his Lord in a hart ful of feare:
24 and the thinges concerning him are writen in the ancient times,
touching them that sinned, and were irreligous against our Lord aboue al
nations, and that sought not the wordes of our Lord vpon Israel.  25 And
after al this fact of Iosias, came vp Pharao the king of AEgypt comming
in Charcamis from the way vpon Euphrates, and Iosias went forth to meete
him.  (4 Kings 23:29 / 2 Par 35:20)  26 And the king of AEgypt sent to
Iosias saying:  What is there betwen me & thee king of Iuda?  27 I was
not sent of the Lord to fight against thee:  for my battel is vpon
Euphrates, goe downe in hast.  28 And Iosias did not returne vpon his
chariote:  but endeuoured to ouerthrow him, not attending the word of the
prophet from the mouth of our Lord:  29 but he made battel against him in
the field of Mageddo.  And princes went downe to king Iosias.  30 And the
king said to his seruantes:  Remoue me from the battel, for I am weakned
excedingly.  And forthwith his seruantes remoued him out of the battel.
31 And he went vp into his second chariote:  & comming to Ierusalem,
dyed, and was buried in his fathers sepulchre.  32 And in al Iurie they
mourned for Iosias, & the rulers with their wiues lamented him vntil this
day.  And this was geuen out to be done alwayes vnto al the stocke of
Israel.  33 But these thinges were writen before in the booke of the
histories of the kinges of Iuda:  and al the actes of the doing of
Iosias, and his glorie and his vnderstanding in the law of our Lord:  and
the thinges that were done by him, and that are not writen in the booke
of the kinges of Israel and Iuda.  34 And they that were of the nation,
taking Iechonias the sonne of Iosias, made him king for Iosias his
father, when he was three and twentie yeares old.  (4 Kings 23:30 /
2 Par 36:1)  35 And he reigned ouer Israel three monethes.  And the king
of AEgypt remoued him, that he should not reigne in Ierusalem:  36 and he
put a taxe vpon the nation of siluer an hundred talentes, and of gold one
talent.  37 And the king of AEgypt made Ioacim his brother king of Iuda
and Ierusalem:  38 and he bound the magistrates of Ioacim, and Zaracel
his brother, and taking them brought them backe into AEgypt.  39 Ioacim
was fiue and twentie yeares old when he began to reigne in the land of
Iuda and Ierusalem:  and he did euil in the sight of our Lord.  40 And
after this man came vp Nabuchodonosor the king of Babylon, and binding
him with a bande of brasse, brought him into Babylon.  41 And
Nabuchodonosor tooke the sacred vessels of our Lord, and carried away,
and consecrated them in his temple in Babylon.  42 For his vncleanes, and
lacke of religion is written in the booke of the times of the kinges.
43 And Ioachin his sonne reigned for him.  And when he was made king, he
was eightene yeares old.  44 And reigned three monethes and ten dayes in
Ierusalem, and did euil in the sight of our Lord:  45 and after a yeare
Nabuchodonosor sending, transported him into Babylon together with the
sacred vessels of our Lord.  (4 Kings 24:13)  46 And he made Sedecias
king of Iuda and Ierusalem, when he was one and twentie yeares old:
(4 Kings 24:17)  and he reigned eleuen yeares.  47 And he did euil in the
sight of our Lord, and was not afraid of the wordes which were spoken by
Ieremie the prophet from the mouth of our Lord:  (Jer 37:2)  48 and being
sworne of king Nabuchodonosor, forsworne he did reuolt:  and his necke
being hardened, & his hart, he transgressed the ordinances of our Lord
the God of Israel.  49 And the princes of the people of our Lord did
manie thinges wickedly, and they did impiously aboue al the vncleannes of
the nations:  and they polluted the temple of our Lord that was holie of
Ierusalem.  50 And the God of their fathers sent by his messenger to
reclame them, for that he would spare them, and his tabernacle.  51 But
they scorned at his messengers:  and in the day that our Lord spake to
them, they were mocking his prophetes.  52 Who was moued euen vnto wrath
vpon his nation for their impietie, and commanded the kinges of the
Chaldees to come vp.  53 These slewe their yong men with the sword, round
about their holie temple, and spared not yong man, and old man, and
virgin, and youth:  54 but al were deliuered into their handes:  & taking
al the sacred vessels of our Lord, and the kinges treasures, they caried
them into Babylon, 55 and burnt the house of our Lord, and threwe downe
the walles of Ierusalem:  and the towres therof they burnt with fire,
56 and consumed al their honorable thinges, and brought them to naught,
and those that were left of the sword, they led into Babylon.  57 And
they were his seruants vntil the Persians reigned in the fulfilling of
the word of our Lord by the mouth of Ieremie:  (Jer 25:12 / Jer 29:10 /
Dan 9:2)  58 as long as the land quietly kept her sabbathes, al the time
of her desolation she sabbathized in the application of seuentie yeares.



CHAP. II.


Cyrus king of Persia permitteth the Iewes to returne into their countrie:
10. and deliuereth to them the holie vessels, which Nabuchodonosor had
taken from the temple.  16. Certaine aduersaries writing to king
Artaxerxes, hinder those that would repayre the ruines of Ierusalem.

CYRVS king of the Persians reigning for the accomplishment of the word of
our Lord by the mouth of Ieremie, (2 Par 36:22 / 1 Esd 1:1 / 1 Esd 6:3 /
Jer 25:12 / Jer 29:10 / Dan 9:2) 2 our Lord raysed vp the spirit of Cyrus
king of the Persians, and he proclaymed in al his kingdomes, and that by
writing, 3 saying:  Thus sayth Cyrus king of the Persians:  The Lord of
Israel, the high Lord, hath made me king ouer the whole earth.  4 and
hath signified to me to build him a house in Ierusalem, which is in
Iurie.  5 If there be any of your kinred, his Lord goe vp with him into
Ierusalem.  6 Whosoeuer therefore dwel about the places, let them helpe
them that are in the same place, in gold and siluer, 7 in giftes, with
horses, and beastes, and with other thinges which by vowes are added into
the temple of our Lord, which is in Ierusalem.  8 And the princes of the
tribes, of the villages and of Iurie, of the tribe of Beniamin, & the
Priestes, and the Leuites standing vp, whom our Lord moued to goe vp, and
to build the house of our Lord which is in Ierusalem, and they that were
round about them, 9 did helpe them with al their gold and siluer, and
beastes, and manie whose minde was stirred vp, with many vowes.  10 And
Cyrus the king brought forth the sacred vessel of our Lord, which
Nabuchodonosor the king of Babylon transported out of Ierusalem, and
consecrated them to his Idol.  11 And Cyrus the king of Persians bringing
them forth, deliuered them to Mithridatus, who was ouer his treasures.
12 And by him they were deliuered to Salmanasar president of Iurie.
13 And of these this was the number:  Cuppes for libamentes of siluer two
thousand foure hundred, basens of siluer thirtie:  phials of gold
thirtie, also of siluer two thousand foure hundred:  and other vessels a
thousand.  14 and al the vessels of gold and siluer, were fiue thousand
eight hundred sixtie.  15 And they were numbered to Salmanasar together
with them, that came out of the captiuite of Babylon into Ierusalem.
16 But in the times of Artaxerxes king of the Persians, there wrote to
him of them that dwelt in Iurie and Ierusalem, Balsamus, and Mithridatus,
and Sabellius, and Rathimus, Balthemus, Sabellius scribe, and the rest
dweling in Samaria, and other places the epistle folowing to king
Artaxerxes.  (1 Esd 4:7)  17 SIR, thy seruantes Rathimus ouer
occurrentes, and Sabellius the scribe, and the other iudges of thy court
in Caelesyria, and Phenice.  18 And now be it knowen to our Lord the
king, that Iewes came vp from you to vs, coming into Ierusalem a
rebellious, & very naughty citie, do build the fornaces thereof, and set
vp the walles, and rayse the temple.  19 And if this citie, and the
walles shal be finished, they wil not onlie not abyde to pay tributes,
but also wil resist the kinges.  20 And because that is in doing about
the temple, we thought it should doe wel not to neglect this same thing:
21 but to make it knowen to our Lord the king, that if it shal seme good,
o king it may be sought in the bookes of thy fathers, 22 and thou shalt
find in the recordes, thinges writen of these, and thou shalt know that
this citie hath bene rebellious, and trubling kinges, and cities, 23 and
the Iewes rebelles, & making battels in it from time out of mind, for the
which cause this citie was made desolate.  24 Now therfore we doe thee to
vnderstand, Lord king, that if this citie shal be built, and the walles
therof shal be erected, there wil be no comming downe for thee into
Caelesyria, & Phenice.  25 Then wrote the king to Rathimus, the writer of
the occurrentes, and to Balthemus, and to Sabellius the scribe, and to
the rest ioyned with them, and to the dwellers in Syria, and Phenice, as
foloweth:  26 I haue read the epistle that you sent me.  I commanded
therfore search to be made, & it was found that the same citie is from
the beginning rebellious to kinges, 27 and the men rebelles, and making
battels in it, & there were most valient kinges ruling in Ierusalem, and
exacting tributes in Caelesyria, & Phenice.  28 Now therfore I haue geuen
commandment to forbid those men to build the citie, and to stay them that
nothing be done more then is:  29 and that they proceeded not farder,
wherof are euils, so that there may be truble brougt vpon the kinges.
30 Then these things being read which were writen of king Artaxerxes,
Rathimus, and Sabellius the scribe, and they that were apointed with them
ioyning together in hast came to Ierusalem with a troupe of horsemen, and
multitude, & companie:  31 and they begane to forbid the builders, and
they ceased from building of the temple in Ierusalem, til in the second
yeare of the reigne of Darius king of the Persians.



CHAP. III.


After a solemne supper made to al the court, and chief princes, king
Darius sleeping:  4. three esquires of the bodie keeping watch, proposed
the question:  10. VVhether wine, or a King, or wemen, or the truth doth
excel?  17. The first prayseth wine.

KING Darius made a great supper to al his domestical seruantes, and to al
the magistrates of Media and Persia, 2 and to al that were purple, and to
the praetors, and counsuls, and liuetenantes vnder him from India vnto
AEthiopia, an hundred twentie seuen prouinces.  3 And when they had eaten
and drunken, and returned ful, then Darius went vp into his chamber, and
slept, and awaked.  4 Then those three youngmen kepers of his bodie,
which garded the kings bodie, sayd one to an other; 5 Let euerie one of
vs say a word that may excel:  & whose word soeuer shal appeare wiser
then the others, to him wil king Darius geue great giftes, 6 to be
couered with purple, & to drinke in gold, and to sleepe vpon gold, & a
chariote with a bridle of gold, & a bonet of silke, and a cheyne about
his necke:  7 and he shal sit in the second place next Darius for his
wisdome.  And he shal be called the cosin of Darius.  8 Then euerie one
writing his word signed it, and they put it vnder the pillow of Darius
the king, 9 and they sayd.  When the king shal rise, we wil geue him our
writinges:  and which soeuer of the three the king shal iudge, and the
magistrates of Persia, that his word is the wiser, to him shal the
victorie be geuen as is writen.  10 One wrote:  Wine is strong.  11 An
other wrote, a King is stronger.  12 The third wrote, Wemen are more
strong:  but aboue al thinges truth ouercometh.  13 And when the king was
risen, they tooke their writinges, and gaue him, and he read.  14 And
sending he called al the Magistrates of Persians, and the Medes, and them
that weare purple, and the pretors, and the ouerseers; 15 and they sate
in the councel:  and the writinges were read before them.  16 And he
sayd:  Cal the youngmen, and they shal declare their owne wordes.  And
they were called, and went in.  17 And he sayd to them:  Declare vnto vs
concerning these thinges which are writen.  And the first began, he that
had spoken of the strength of wine, 18 and sayd:  O ye men, how doth wine
preuaile ouer al men that drinke!  it seduceth the minde.  19 And also
the mind of king and orphane it maketh vaine.  Also of the bondman and
the free, of the rich man and the poore, 20 and euerie mind it turneth
into securitie and pleasantnes, and it remembreth not any sorow and
dewtie, 21 and al hartes it maketh honest, and it remembreth not king,
nor magistrate, and it maketh a man speake al thinges by talentes.
22 And when they haue drunke, they remember not frendship, nor
brotherhood:  yea and not long after they take swordes.  23 And when they
are recouered and risen from the wine, they remember not what they haue
done.  24 O ye men, doth not wine excel?  who thinketh to doe so?  And
hauing sayd this, he held his peace.



CHAP. IIII.


The second prayseth the excellencie of a king:  13. The third (which is
Zorobabel) commendeth wemen:  33. but preferreth truth aboue al.
41. VVhich is so approued, and he is rewarded.  42. The king moreouer at
his request restoreth the holie vessels of the temple, and granteth
meanes to build the citie of Ierusalem, and the temple.

AND the next began to speake, he that spake of the strength of a king.
2 O ye men doe not the men excel, which obteyne land and sea, and al
thinges that are in them?  3 But a king excelleth aboue al thinges, and
hath dominion ouer them:  and euerie thing whatsoeuer he shal say to
them, they doe.  4 And if he send them to warryers, they goe, and throw
downe mountaines, and the walles, and towers.  5 They kil, and are
killed:  and the kinges word they transgresse not.  For if they shal
ouercome, they bring to the king al thinges whatsoeuer they haue taken
for a praye.  6 In like maner also al others, for so many as are not
souldiars, nor fight, but til the ground:  when they shal reape, againe
they bring tributes to the king.  7 And he being one onlie if he say:
Kil ye, they kil:  say he:  forgeue, the forgeue.  8 say he:  strike:
they strike:  say he, destroy, they destroy:  say he build, they build.
9 say he, cut downe, they cut downe, say he plant, they plant:  10 and al
the people, & potestates here him, and beside this he sitteth downe, and
drinketh, and sleepeth.  11 And others gard him round about, and can not
goe euerie one, and doe their owne workes, but at a word are obedient to
him.  12 O ye men, how doth not a king excel that is so renowmed?  And he
held his peace.  13 The third that spake of wemen and truth, this is
Zorobabel, began to speake.  14 O ye men, not the great king, & many men,
neither is it wine that dothe excel.  Who is it then that hath the
dominion of them?  15 Haue not wemen brought forth the king, and al the
people, that ruleth ouer land & sea:  16 and were they not borne of them,
and did not they bring vp them which planted the vineyardes, whereof wine
is made?  17 And they make the garmentes of al men, & they doe honor to
al men, and men can not be separed from wemen.  18 If they haue gathered
gold and siluer, and euerie beutiful thing, & see a woman comelie and
fayre, 19 leauing al these thinges they fixe their looke vpon her, & with
open mouth beholde her, and allure her more then gold and siluer, and
euerie precious thing.  20 Man forsaketh his father that brought him vp,
and his countrie, and ioyneth himself to a woman.  21 And with a woman he
refresheth his soul:  and neither doth he remember father, nor mother,
nor countrie.  22 And hereby you must know that wemen rule ouer you.  Are
you not sorie?  23 And a man taketh his sword, & goeth into the way to
commit theftes and murders, & to sayle seas & riuers, 24 and seeth a
lyon, and goeth in darkenes:  and when he hath committed theft, and
fraude, and spoyles, he bringeth it to his beloued.  25 And againe, man
loueth his wife more then father or mother.  26 And many haue become
madde for their wiues:  and haue been made bondmen for them:  27 and many
haue perished and bene slayne, and haue sinned for wemen.  28 And now
beleue me, that the king is great in his powre:  because al countries are
afrayd to touch him.  29 Neuertheles I saw Apemes the daughter of Bezaces
the concubine of a meruelous king, sitting by the king at his right hand,
30 and taking of the crowne from his head, and putting it vpon her self,
and with the palme of her left hand she stroke the king.  31 And beside
these thinges he with open mouth beheld her:  and if she smiled he
laugheth, and if she be angrie with him, he flattereth, til he be
reconciled to her fauour.  32 O ye men, why are not wemen stronger?
Great is the earth, and high is the heauen:  who doeth these thinges?
33 And then the king and they that weare purple looked one vpon an other.
And he began to speake of truth.  34 O ye men, are not wemen strong?  The
earth is great and heauen is high:  & the swift course of the sunne
turneth the heauen round into his place in one day.  35 Is not he
magnifical that doth these thinges, and the truth great, and stronger
aboue al thinges?  36 Al the earth calleth vpon the truth, heauen also
blesseth it, and al workes are moued, and tremble at it, and there is not
any thing with it vniust.  37 Wine is vniust, the king is vniust, wemen
are vniust, al the sonnes of men are vniust, and al their workes are
vniust, and in them is not truth, and they shal perish in their
iniquitie:  38 and truth abydeth, and groweth strong for euer, and
liueth, and preuayleth for euer and euer.  39 Neither is there with it
acception of persons, nor differences:  but the thinges that are iust it
doth to al men, to the vniust and malignant, and al men are wel pleased
in the workes thereof.  40 And there is no vniust thing in the iudgement
therof, but strength, and reigne, and power, and maiestie of worldes.
Blessed be the God of truth.  41 And he left speaking.  And al the people
cryed, and sayd:  Great is truth and it preuaileth.  42 Then the king
sayd to him:  Aske, if thou wilt any more, then the thinges that are
writen, and I wil geue it thee, according as thou art found wiser then
thy neighbours, & thou shalt sitte next to me, and shalt be called my
cosin.  43 Then sayd he to the king:  Be midful of thy vow, which thou
hast vowed, to build Ierusalem in the day that thou didst receiue the
kingdom:  44 and to send backe al the vessels that were taken out of
Ierusalem, which Cyrus separated, when he sacked Babylon, and would haue
sent them backe thither.  45 And thou hast vowed to build the temple,
which the Idumeians burnt, when Iurie was destroyed of the Chaldees.
46 And now this is that which I aske Lord, & which I desire, this is the
maiestie which I desire of thee, that thou performe the vowe which thou
hast vowed to the king of heauen by thy mouth.  47 Then Darius the king
rising vp, kissed him:  and wrote letters to al the officers, and
ouerseers, and them that weare purple, that they should conduct him, and
them that were with him, al going vp to build Ierusalem.  48 And to al
the ouerseers that were in Syria, and Phoenice, and Libanus he wrote
letters, that they should draw Ceder trees from Libanus into Ierusalem,
to build the citie with them.  49 And he wrote to al the Iewes which went
vp from the kingdome into Iurie for libertie, euerie mightie man, &
magistrate, & ouerseer not to come vpon them to their gates, 50 and al
the countrie which they had obtayned to be free vnto them, & that the
Idumeians leaue the castels which they possesse of the Iewes, 51 and to
the building of the temple to geue euerie yeare twentie talentes vntil it
were throughly built:  52 & vpon the altars to burne holocausts dayly, as
they haue commandment:  to offer other ten talentes euery yeare, 53 & to
al that go forth from Babylon to build the citie, that there should be
libertie as wel to them as to their children, and to al the priestes that
goe before.  54 And he wrote a quantitie also, and commanded the sacred
stole to be geuen, wherein they should serue; 55 and to the Leuites he
wrote to geue preceptes, vntil the day wherein the house shal be
finished, and Ierusalem builded.  56 And to al that kepe the citie, he
wrote portions and wages to be geuen to them.  57 And he sent away al the
vessels whatsoeuer Cyrus had separated from Babylon, and al thinges
whatsoeuer Cyrus sayd, he also commanded to be donne, and to be sent to
Ierusalem.  58 And when that yong man was gone forth, lyfting vp his face
toward Ierusalem, he blessed the king of heauen, 59 & sayd:  Of thee is
victorie, and of thee is wisdome, and glorie.  And I am thy seruant.
60 Blessed art thou which hast geuen me wisedom, and I wil confesse to
thee Lord God of our fathers.  61 And he toke the letters, and went into
Babylon.  And he came, and told al his brethren that were in Babylon:
62 and they blessed the God of their fathers, because he gaue them
remission and refreshing, 63 that they should goe vp and build Ierusalem,
and the temple wherein his name was renowmed, and they reioyced with
musike and ioy seuen dayes.



CHAP. V.


Those that returned from captiuitie of Bablyon into Ierusalem, and Iurie,
are recited.  47. They restore Gods seruice:  66. but are hindered from
building.

AFTER these thinges there were chosen, to goe vp the princes of townes by
their houses, and tribes, and their wiues, and their sonnes and
daughters, and their men seruantes and wemen seruantes, and their cattel.
(1 Esd 2:1)  2 And Darius the king sent together with them a thousand
horsmen, til they conducted them to Ierusalem with peace, & with musicke
& with tymbrels, and shaulmes:  3 and al the brethren were playing, and
he made them goe vp together with them.  4 And these are the names of the
men that went vp by their townes according to tribes, and according to
the portion of their principalitie.  5 Priestes:  The children of
Phinees, the sonne of Aaron, Iesus the sonne of Iosedec, Ioacim the sonne
of Zorobabel, the sonne of Salatheil of the house of Dauid, of the
progenie of Phares, of the tribe of Iuda.  6 Who spake vnder Darius king
of the Persians the meruelous wordes in the second yeare of his reigne
the first moneth Nisan.  7 And they are these, that of Iurie came vp from
the captiuitie of the transmigration, whom Nabuchodonosor the king of
Babylon transported into Babylon, and returned into Ierusalem.
(1 Esd 2:2 / 2 Esd 7:6)  8 And euerie one sought a part of Iurie
according to his owne citie, they that came with Zorobabel, and Iesus,
Nehemias, Areores, Elimeo, Emmanio, Mardocheo, Beelsuro, Mechpsatochor,
Olioro, Emonia one of their princes.  9 And the number of them of the
same nation, of their rulers the children of Phares, two thousand an
hundred seuentie two:  10 The children of Ares, three thousand an hundred
fiftie seuen:  11 The children of Phoemo, an hundred fourtie two:  in the
children of Iesus and Ioabes, a thousand three hundred two:  12 the
children of Demu, two thousand foure hundred seuentie:  the children of
Choraba, two hundred fiue:  the children of Banica, an hundred sixtie
eight, 13 the children of Bebech, foure hundred three:  the children of
Archad, foure hundred twentie seuen:  14 the children of Cham, thirtie
seuen:  the children of Zoroar, two thousand sixtie seuen:  the children
of Adin, foure hundred sixtie one:  15 the children of Aderectes, an
hundred eight:  the children of Ciaso and Zelas an hundred seuen:  the
children of Azoroc, foure hundred thirtie nine:  16 the children of
Iedarbone, an hundred thirtie two:  the children of Ananias, an hundred
thirtie:  the children of Asoni, ninetie:  17 the children of Marsar,
foure hundred twentie two:  the children of Zabarus, nintie fiue:  the
children of Sepolemon, an hundred twentie three:  18 the children of
Nepopas, fiftie fiue:  the children of Hechanatus, an hundred fiftie
eight:  the children of Cebethamus, an hundred thirite two:  19 the
children of Crearpatros, which are of Enocadie and Modia, foure hundred
twentie three:  they of Gramas and Babea, an hundred twentie one.
20 They of Besselon, and Ceagge, sixtie fiue:  they of Bastraro, an
hundred twentie two:  21 they of Bechenobes, fiftie fiue:  the children
of Liptis, an hundred fiftie fiue:  the children of Labonni, three
hundred fiftie seuen:  22 the children of Sichem, three hundred seuentie:
the children of Suadon, & Cliomus, three hundred seuentie eight:  23 the
children of Ericus, two thousand an hundred fourtie fiue:  the children
of Anaas, three hundred seuentie.  The priestes:  24 the children of
Ieddus, the sonne of Euther, the sonne of Eliasib, three hundred seuenty
two:  the children of Emerus, two hundred fiftie two:  25 the children of
Phasurius, three hundred fiftie seuen the children of Caree, two hundred
twentie seuen.  26 The Leuites:  The children of Iesus in Caduhel, and
Bamis, and Serebias, and Edias, seuentie foure, the whole number from the
twelfth yeare, thiritie thousand foure hundred sixtie two.  27 The
sonnes, and daughters, and wiues, the whole number, fourtie thousand two
hundred fourtie two.  28 The children of the Priestes, that sang in the
temple:  the children of Asaph, an hundred twentie eight.  29 And the
porters:  the children of Esmeni, the children of Azer, the children of
Amon, the children of Accuba, of Topa, the children of Tobi, al an
hundred thirtie nine.  30 Priestes that serued in the temple:  the
children of Sel, the children of Gaspha, the children of Tobloch, the
children of Caria, the children of Su, the children of Hellu, the
children of Lobana, the children of Armacha, the children of Accub, the
children of Vtha, the children of Cetha, the children of Aggab, the
children of Obai, the children of Anani, the children of Canna, the
children of Geddu, 31 the children or An, the children of Radin, the
children of Desanon, the children of Nachoba, the children of Caseba, the
children of Gaze, the children of Ozui, the children of Sinone, the
children of Attre, the children of Hasten, the children of Asiana, the
children of Manei, the children of Nasissim, the children of Acusu, the
children of Agista, the children of Azui, the children of Fauon, the
children of Phasalon, 32 the children of Meedda, the children of Phusa,
the children of Caree, the children of Burcus, the children of Saree, the
children of Coesi, the children of Nasith, the children of Agisti, the
children of Pedon.  33 Salomon his children, the children of Asophot, the
children of Phasida, the children of Celi, the children of Dedon, the
children of Gaddehel, the children of Sephegi, 34 the children of Aggia,
the children of Sachareth, the children of Sabathen, the children of
Caroneth, the children of Malsith, the children of Ama, the children of
Sasus, the children of Addus, the children of Suba, the children of Eura,
the children of Rahotis, the children of Phasphat, the children of
Malmon.  35 Al that serued the sanctuarie, and the seruantes of Salomon,
foure hundred eightie two.  36 These are the children that came vp from
Thelmela, Thelharsa:  the princes of them, Carmellam, and Careth:  37 and
they could not declare their cities, and their progenies, how they are of
Israel.  The children of Dalari, the children of Tubal, the children of
Nechodaici, 38 of the Priestes, that did the function of priesthood:  and
there were not found the children of Obia, the children of Achisos, the
children of Addin, who tooke a wife of the daughters of Pargeleu:  39 and
they were called by his name, and the writing of the kinred of these was
sought in the register, and it was not found, and they were forbid to doe
the function of priesthood.  40 And Nehemias and Astharus sayd to them:
Let not the holie thinges be participated, til there arise a hiegh priest
lerned for declaration and truth.  41 And al Israel was beside men
seruantes, and wemen seruantes, fourtie two thousand three hundred
fourtie.  42 Their men seruantes and wemen seruantes, seuen thousand
three hundred thirtie seuen.  Singing men and singing wemen, two hundred
three score fiue.  43 Camels, foure hundred thiritie fiue.  Horses, seuen
thousand thirtie six.  Mules, two hundred thousand fourtie fiue.  Beastes
vnder yoke, fiue thousand twentie fiue.  44 And of the rulers themselues
by their villages, when they came into the temple of God, which was in
Ierusalem, to renew and raise vp the temple in his place, according to
their power:  45 and to be geuen into the temple to the sacred treasure
of the workes, of gold twelue thousand mnas, and fiue thousand mnas of
siluer, and stoles for Priestes an hundred.  46 And the Priestes and
Leuites, and they that came out of the people, dwelt in Ierusalem, and in
the countrie, and the sacred singingmen, and porters, and al Israel in
their countries.  47 And the seuenth moneth being at hand, and when the
children of Israel were euerie man in his owne affayres, they came
together with one minde into the court, that was before the east gate.
(1 Esd 3:1)  48 And Iesus the sonne of Iosedec, and his brethren the
priestes:  Zorobabel the sonne of Salathiel, and his brethren standing
vp, prepared an altar, 49 that they might offer vpon it holocaustes,
according to the thinges that are writen in the booke of Moyses the man
of God.  50 And there assembled there of other nations of the land, and
al the nations of the land erected the altar in his place, and they
offered hostes, and morning holocaustes to our Lord.  51 And they
celebrated the feast of Tabernacles, and the solemne day, as it is
commanded in the lawe:  and sacrifices dayly, as it behoued:  52 and
after these the appointed oblations, and the hostes of the sabbathes, and
of the newmoones, and of al the solemne sanctified dayes.  53 And as
manie as vowed to our Lord from the new moone of the seuenth moneth,
began to offer the hostes to God, and the temple of our Lord was not yet
built.  54 And they gaue monie to the masones and workemen, and drinke
and victuals with ioy.  55 And they gaue cartes to the Sidonians, and
Tyrianes, that with them they should carie ceder beames from Lybanus, and
should make boates in the hauen Ioppe, according to the decre that was
writen for them by Cyrus king of the Persians.  56 And in the second
yeare coming into the temple of God in Ierusalem, in the second moneth
began Zorobel the sonne of Salathiel, and Iosue the sonne of Iosedec, and
their bretheren, and the Priestes and Leuites, and al that were come from
the captiuitie into Ierusalem.  57 and they founded the temple of God in
the newmoone of the second moneth of the second yeare, after that they
came into Iurie and Ierusalem.  58 And they appoynted the Leuites from
twentie yeares, ouer the workes of our Lord:  and Iesus stood and his
sonne, and the bretheren, al Leuites ioyning together, & executors of the
lawe, doing the workes in the house of our Lord.  59 And al the Priestes
stood, hauing stoles with trumpettes:  60 and Leuites the children of
Asaph, hauing cymbals together praysing our Lord, and blessing him
according to Dauid king of Israel.  61 And they song a song to our Lord,
because his sweetenes, and honour is for euer vpon Israel.  62 And al the
people sounded with trumpet, and cried out with a loud voice, praysing
our Lord in the raysing vp of the house of our Lord.  63 And there came
of the Priestes and Leuites, and presidentes by their villages the more
ancientes, which had sene the old house:  64 and to the building of this
with crie and great lamentation, and manie with trumpettes and great ioy:
65 in so much that the people heard not the trumpettes for the
lamentatinon of the people.  For the multitude was sounding with
trumpettes magnifically, so that it was heard far of.  66 And the enimes
of the tribe of Iuda, and Beniamin heard it, and they came to knowe what
the voyce of the trumpettes was:  67 And they knew that they which were
of the captiuitie doe build a temple to our Lord the God of Israel.
68 And coming to Zorobabel & Iesus, the ouerseers of the villages, they
sayd to them:  We will build together with you:  (1 Esd 4:2)  69 For we
haue in like maner heard your Lord, & we walke like from the dayes of
Asbazareth king of the Assyrians, who transported vs hither.  70 And
Zorobabel, and Iesus, & the princes of the villages of Israel, sayd to
them:  71 It is not for vs and you to build the house of our God.  For we
alone wil build to our Lord of Israel according as Cyrus the king of the
Persians hath commanded.  72 And the nations of the land lying vpon them
that are in Iurie, and lifting vp the worke of the building, and bringing
ambushmentes, and peoples, prohibited them to build.  73 and practising
assaultes hindred them, that the building might not be finished al the
time of the life of king Cyrus, and they differred the building for two
yeares vntil the reigne of Darius.



CHAP. VI.


The Iewes by assistance of king Darius build vp the Temple in Ierusalem.

AND in the second yeare of the reigne of Darius prophecied Aggeus, and
Zacharias the sonne of Addo the prophet to Iurie and Ierusalem in the
name of God of Israel vpon them.  (1 Esd 5:1)  2 Then Zorobabel the sonne
of Salathiel standing vp, and Iesus the sonne of Iosedec begane to build
the house of our Lord, which is in Ierusalem.  3 When the prophetes of
our Lord were present with them, and did helpe them.  At the same time
came Sisennes to them, the deputie of Syria, and of Phenice, and
Satrabuzanes, and his felowes:  4 and they sayd to them:  By whose
commandment, build ye this house, and this roofe, and perfite al other
thinges?  And who are the workmen that build these thinges?  5 And the
ancientes of the Iewes, which were left of the captiuitie by our Lord,
had fauoure when the visitation was made vpon them.  6 And they were not
hindered from building, til it was signified to Darius of al these
thinges, and answer was receiued.  7 A copie of the letter, which they
sent to Darius.  SISENNES deputie of Syria and Phenice, and Satrabuzanes,
and his felowes in Syria and Phenice presidents, to king Darius
greetings:  8 Be al thinges knowen to our Lord the king, that when we
came into the countrie of Iurie, and had entered into Ierusalem, we found
them building the great house of God.  9 And the temple of polished
stones, and of great and precious matter in the walles.  10 And the
workes to be a doing earnestly, and to succede, and prosper in their
handes, and in al glorie to be perfited most diligently.  11 Then we
asked the ancients saying, by whose permission build ye this house, &
found these workes?  12 And therfore we asked them, that we might doe
thee to know the men & the ouerseers, and we required of them a rolle of
the names of the ouerseers.  13 But they answered vs saying:  We are the
seruantes of the Lord, which made heauen and earth.  14 And this house
was built these manie yeares past by a king of Israel, that was great and
most valiant, and was finished.  15 And because our fathers were
prouoking to wrath, and sinned agaynst God of Israel, he deliuered them
into the handes of Nabuchodonosor the king of Babylon, king of the
Chaldees.  16 And throwing downe this house they burnt it, and they led
the people captiue into Babylon.  17 In the first yeare when Cyrus
reigned the king of Babylon, Cyrus the king wrote to build this house.
18 And these sacred vessels of gold and siluer which Nabuchodonosor had
taken out of the house which is in Ierusalem, and had consecrated them in
his owne temple, Cyrus brought them forth agayne out of the temple which
was in Babylon, and they were deliuered to Zorobabel, & to Salmanasar the
deputie.  19 And it was commanded them that they should offer these
vessels, & lay them vp in the temple, which was in Ierusalem, and build
the temple of God itself in his place.  20 Then did Salmanasar lay the
fundations of the house of our Lord, which is in Ierusalem:  and from
that time vntil now it is a building, and is not accomplished.  21 Now
therfore if thou thincke it good o king, let it be sought in the kings
liberaries of Cyrus the king, which are in Babylon:  22 and if it shal be
found, that the building of the house of the Lord, which is in Ierusalem,
begane by the counsel of Cyrus the king, and it be thought good of our
Lord the king, let him write to vs of these thinges.  23 Then Darius the
king commanded search to be made in the libraries:  and there was found
in Ecbatana a towne that is in the countrie of Media, one place wherin
were writen these wordes:  (1 Esd 6:1)  24 IN THE FIRST YEARE of the
reigne of Cyrus, king Cyrus commanded to build the house of the Lord
which is in Ierusalem, where they did burne incense with dayly fire,
25 the height wherof shal be of ten cubits, & the bredth three score
cubites, foure square with three stones polished, and with a loft galerie
of wood of the same countrie, & one new galerie, and the expenses to be
geuen out of the house of Cyrus the king.  26 And the sacred vesseles of
the house of the Lord, as wel of gold as of siluer, which Nabuchodonosor
tooke from the house of our Lord, which is in Ierusalem where they were
layed, that they be put there:  27 And he commanded Sisennes the deputie
of Syria & Phoenice, and Satrabuzanes, and his felowes & them that were
ordayned presidentes in Syria & Phoenice, that they should refraine
themselues from that place.  28 And I also haue geuen commandment to
build it wholly:  and haue prouided, that they helpe them, which are of
the captiuitie of the Iewes, til the temple of the house of the Lord be
accomplished.  29 And from the vexation of the tributes of Coelesyria &
Phoenice, a quantitie to be geuen diligently to these men for the
sacrifice of the Lord, to Zorobabel the gouernour, for oxen, and rammes,
and lambes.  30 And in like maner corne also, and salt, and wine, and
oyle continually yeare by yeare, according as the priestes which are in
Ierusalem, haue prescribed to be spent dayly:  31 that libamentes may be
offered to the most high God for the king & his children, & that they may
pray for their life.  32 And that it be denounced, that whosoeuer shal
transgresse anie thing of these which are writen, or shal despise it, a
beame be taken of theyr owne, & they be hanged, & their goodes be
confiscate to the king.  33 Therfore the Lord also, whose name is
inuocated there, destroy euery king & nation, that shal extend their hand
to hinder or to handle il the house of the Lord which is in Ierusalem.
34 I Darius the king haue decreed that it be most diligently done
according to these thinges.



CHAP. VII.


The house of God is finished, 7. and dedicated, 10. the feast of Pasch is
also celebrated seuen dayes with Azimes.

THEN Sisennes the deputie of Coelesyria, and Phaenice, and Satrabuzames,
and their felowes, obeying those thinges which were decreed of Darius the
king, (1 Esd 6:13) 2 applied the sacred workes most diligently, working
together with the ancientes of the Iewes, the princes of Syria.  3 And
the sacred workes prospered, Aggeus & Zacharias the prophetes
prophecying.  4 And they accomplished al thinges by the precept of our
Lord the God of Israel, and by the counsel of Cyrus, & Darius, and
Artaxerxes the king of the Persians.  5 And our house was a finishing
vntil the three and twentith day of the moneth of Adar, the sixth yeare
of Darius the king.  6 And the children of Israel, and the Priestes and
Leuites, and the rest that were of the captiuitie, which were added did
according to those thinges that are written in the booke of Moyses.
7 And they offered for the dedication of the temple of our Lord, oxen an
hundred, rammes two hundred, lambes foure hundred.  8 And kiddes for the
sinnes of al Israel, twelue, according to the number of the tribes of
Israel.  9 And the Priestes and Leuites stood clothed with stoles by
tribes, ouer al the workes of our Lord the God of Israel, according to
the booke of Moyses, and the porters at euerie gate.  10 And the children
of Israel, wih them that were of the captiuitie celebrated the phase of
the fourtenth moone of the first moneth, when the Priestes and Leuites
were sanctified.  11 Al the children of the captiuitie were not
sanctified together, because al the Leuites were sanctified together.
12 And al the children of the captuitie immolated the phase, both for
their brethren the Priestes, and for them selues.  13 And the children of
Israel did eate, they that were of the captiuitie al that remayned apart
from al the abominations of the nations of the land seeking our Lord.
14 And they celebrated the festiual day of Azymes seuen dayes feasting in
the sight of our Lord.  15 Because he turned the counsel of the king of
the Assirians toward them, to strengthen their handes to the workes of
our Lord the God of Israel.



CHAP. VIII.


Esdras going from Babylon to Ierusalem, 9. carieth king Artaxerxes
fauourable letters, 14. with licence to take gold, siluer, and al thinges
necessarie at their pleasure.  31. The chief men that goe with him are
recited.  51. He voweth a fast praying for good success in their iorney.
56. weigheth the gold and siluer, which he deliuereth to the Priestes,
and Leuites.  69. And seuerely admonisheth the people to repentance, for
their mariages made with infideles.

AND after him when Artaxerxes king of the Persians reigned, came Esdras
the sonne of Azarias, the sonne of Helcias the sonne of Salome,
(1 Esd 7:1) 2 the sonne of Sadoc, the sonne of Achitob, the sonne of
Ameri, the sonne of Azahel, the sonne of Bocci, the sonne of Abisue, the
sonne of Phinees the sonne of Eleazar, the sonne of Aaron the first
priest.  3 This Esdras came vp from Babylon being scribe & wise in the
law of Moyses, which was geuen of our Lord the God of Israel to teach and
to doe.  4 And the king gaue him glorie, because he had found grace in al
dignitie and desire in his sight.  5 And there went vp with him of the
children of Israel, and the Priestes, and the Leuites, and the sacred
singers of the temple, and the porters, and the seuantes of the temple
into Ierusalem.  6 In the seuenth yeare when Artaxerxes reigned in the
fifth moneth, this is the seuenth yeare of his reigne, going forth of
Babylon in the newmoone of the fifth moneth, 7 they came to Ierusalem
according to his commandment, according to the prosperitie of their
iourney, which their Lord gaue them.  8 For in these Esdras had great
knowlege, that he would not pretermitte anie of those thinges, which were
according to the law, and the preceptes of our Lord, and in teaching al
Israel al iusticie and iudgement.  9 And they that wrote the writinges of
Araxerxes the king, coming deliuered the writing which was granted of
Artaxerxes the king to Esdras the Priest, & the reader of the law of our
Lord, the copie wherof here foloweth.  10 KING Artaxerxes to Esdras the
Priest, and reader of the law of the Lord, greeting.  11 I of curtesie
esteming it among benifites, haue commanded them that of their owne
accord are desirous of the nation of the Iewes, and of the Priestes and
Leuites, which are in my kingdom, to goe with thee into Ierusalem.  12 If
anie therfore desire to goe with thee, let them come together, and set
forward as it hath pleased me, and my seuen freindes my counselers:
13 that they may visite those thinges which are done touching Iurie and
Ierusalem, obseruing as thou hast in the law of the Lord.  14 And let
them carie the giftes to the Lord the God of Israel, which I haue vowed
and my freindes to Ierusalem, and al the gold and siluer, that shal be
found in the countrie of Babylon to the Lord in Ierusalem, with that,
15 which is geuen for the nation it self vnto the temple of their Lord
which is in Ierusalem:  that this gold and siluer be gathered for oxen,
and rammes, and lambes, and kiddes, and for the thinges that are agreable
to these, 16 that they may offer hostes to the Lord vpon the altar of
their Lord, which is in Ierusalem.  17 And al thinges whatsoeuer thou
with thy brethren wilt doe with gold and siluer, doe it at thy pleasure
according to the precept of the Lord thy God.  18 And the sacred vessels,
which are geuen thee to the workes of the house of the Lord thy God,
which is in Ierusalem.  19 And other thinges whatsoeuer shal helpe thee
to the workes of the temple of thy God, thou shalt geue it out of the
kings treasure.  20 When thou with thy brethren wilt doe ought with gold
and siluer, doe according to the wil of the Lord.  21 And I king
Artaxerxes haue geuen commandment to the keepers of the treasure of Syria
and Phaenice, that what thinges soeuer Esdras the Priest and reader of
the law of the Lord, shal write for, they geue him vnto an hundred
talentes of siluer, likewise also of gold.  22 And vnto an hundred
measures of corne, & an hundred vessels of wine, and other thinges
whatsoeuer abound without taxing.  23 Let al thinges be done to the most
high God according to the law of God, lest perhaps there arise wrath in
the reigne of the king, and of his sonne, and his sonnes.  24 And to you
it is sayd, that vpon al the Priestes, and Leuites, and sacred singers,
and seruantes of the temple, & scribes of this temple 25 no tribute, nor
any other taxe be sette, and that no man haue auctoritie to obiect any
thing to them.  26 But thou Esdras according to the wisedom of God
appoynt iudges, and arbitrers in al Syria and Phaenice:  and teach al
them that know no the law of thy God:  27 that whosoeuer shal transgresse
the law, they be diligently punished either with death, or with torment,
or els with a forfeite of money, or with banishment.  28 And Esdras the
scribe sayd:  Blessed be the God of our fathers, which hath geuen this
wil into the kings hart, to glorifie his house, which is in Ierusalem.
29 And hath honoured me in the sight of the king, and of his counselers,
and freindes, and them that weare purple.  30 And I was made constant in
minde according to the ayde of our Lord my God, and gathered together of
Israel men, that should goe vp together with me.  31 And these are the
princes according to their kindredes, and seueral principalities of them
that came vp from Babylon the kingdom of Artaxerxes.  (1 Esd 8:1)  32 Of
the children of Phares, Gerfomus:  and of the children of Siemarith,
Amenus:  of the children of Dauid, Acchus the sonne of Scecilia:  33 Of
the children of Phares, Zacharias, and with him returned an hundred
fiftie men.  34 Of the children of leader Moabilion, Zaraei, and with him
two hundred fiftie men:  35 Of the children of Zachues, Iechonias of
Zechoel, and with him two hundred fiftie men:  36 of the children of
Sala, Maasias of Gotholia, & with him seuentie men:  37 of the children
of Saphatia, Zarias of Michel, and with him eightie men:  38 of the
children of Iob, Abdias of Iehel, and with him two hundred twelue men:
39 of the children of Bania, Salimoth, the sonne of Iosaphia, and with
him an hundred sixtie men:  40 of the children of Beer, Zacharias Bebei,
and with him two hundred eight men:  41 of the children of Ezead, Ioannes
of Eccetan, and with him an hundred ten men:  42 of the children of
Adonicam, which were last, and these are their names, Eliphalam the sonne
of Gebel, and Semeias, and with him seuentie men.  43 And I gathered them
together to the riuer that is called Thia, and we camped there three
dayes, and vewed them againe.  44 And of the children of the Priestes and
Leuites I found not there.  45 And I sent to Eleazarus, and Eccelon, and
Masman, and Maloban, and Enaathan, and Samea, and Ioribum, Nathan,
Enuaugam, Zacharias, and Mosolam the leaders them selues, and that were
skilful.  46 And I sayd to them that they should come to Loddeus, who was
at the place of the treasurie.  47 And I commanded them to say to
Loddeus, and his brethren, and to them that were in the treasurie, that
they should send vs them that might doe the function of priesthood in the
house of the Lord our God.  48 And they brought vnto vs according to the
mightie hand of the Lord our God cunning men:  of the children of Moholi,
the sonne of Leui, the sonne of Israel, Sebebia, & his sonnes and
brethren, which were eightene:  49 Asbia, and Amin of the sonnes of the
children of Chananeus, and their children twentie men.  50 And of them
that serued the temple, whom Dauid gaue, and the princes themselues to
the ministerie of the Leuites of them that serued the temple, two hundred
twentie.  Al their names were signified in writings.  51 And I vowed
there a fast to the yong men in the sight of God, that I might aske of
him a good iourney for vs, and them that were with vs, and for the
children, and the cattel because of ambushementes.  52 For I was ashamed
to aske of the king footemen and horsemen in my companie, to guard vs,
against our aduersaries.  53 For we sayd to the king that the power of
our Lord wil be with them that seeke him with al affection.  54 And
agayne we besought the Lord our God according to these thinges:  whom
also we had propicious, and we obteyned of our God.  55 And I separated
of the rulers of the people, and of the Priestes of the temple, twelue
men, and Sedebia, and Asanna, and with them of their brethren ten men.
56 And I weyed to them the gold and siluer, and the vessels of the house
of our God perteyning to the Priestes, which the king had geuen, and his
counselers, and the princes, and al Israel.  57 And when I had weyed it,
I deliuered of siluer an hundred fiftie talentes, and siluer vessels of
an hundred talentes, and of gold an hundred talentes.  58 And of vessels
of gold seuen score and twelue brasen vessels good of shyning brasse,
resembling the forme of gold.  59 And I sayd to them:  You are also
sanctified to our Lord, and the vessels be holie, and the gold and siluer
is vowed to our Lord the God of our fathers.  60 Watch and keepe, til you
deliuer them to some of the rulers of the people, and to the Priestes,
and Leuites, and to the princes of the cities of Israel in Ierusalem, in
the treasurie of the house of our God.  61 And those Priestes and Leuites
that receiued the gold and siluer and vessels, brought it to Ierusalem
into the temple of our Lord.  62 And we went forward from the riuer Thia,
the twelfth day of the first moneth, til we entred into Ierusalem.
63 And when the third day was come, in the fourth day the gold being
weyed, and the siluer, was deliuered in the house of the Lord our God, to
Marimoth Priest the sonne of Iori.  64 And with him was Eleazar the sonne
of Phinees:  and with them were Iosadus the sonne of Iesus, and Medias,
and Banni the sonne of a Leuite, by number and weight al thinges.  65 And
the weight of them was writen the same houre.  66 And they that came out
of the captiuitie, offered sacrifice to our Lord the God of Israel, oxen
twelue, for al Israel, rammes eightie six, 67 lambes seuentie two, bucke
goates for sinne twelue, and for health twelue kyne, al for the sacrifice
of our Lord.  68 And they read againe the preceptes of the king to the
kinges officers, and to the deputies of Coelesyria, and Phoenice:  and
they honored the nation, and the temple of our Lord.  69 And these
thinges being finished, the rulers came to me, saying:  The stocke of
Isreal, and the princes, and the Priestes, and the Leuites, (1 Esd 9:1)
70 and the strange people, and nations of the land haue not separated
their vncleannes from the Chananeites, and Hetheites, and Pherezeites,
and Iebuseites, and Moobites, & AEgyptians, and Idumeians.  71 For they
are ioyned to their daughters both themselues, and their sonnes:  and the
holie sede is mingled with the strange nations of the earth, and the
rulers and magistrates were partakers of that iniquitie from the
beginning of the reigne it self.  72 And forthwith as I heard these
thinges, I rent my garmentes and sacred tunike:  and tearing the heares
of my head, and my beard, I sate sorowful and heauie.  73 And there
assembled to me mourning vpon this iniquitie, as manie as were then moued
by the word of our Lord the God of Israel, and I sate sad vntil the
euening sacrifice.  74 And I rising vp from fasting, hauing my garmentes
rent and the sacred tunike, kneeling, and stretching forth my handes to
our Lord, 75 I sayd:  Lord I am confounded, and ashamed before thy face,
76 for our sinnes are multiplied ouer our heades, and our iniquities are
exalted euen to heauen.  77 Because from the times of our fathers we are
in great sinne vnto this day.  78 And for the sinnes of vs, and of our
fathers we haue bene deliuered with our brethren, and with our Priestes
to the kinges of the earth, into sword and captiuitie, and spoile with
confusion vnto this present day.  79 And now what a great thing is this
that mercie hath happened to vs from thee o Lord God, & leaue thou vnto
vs a roote, and a name in the place of thy sanctification, 80 to discouer
our light in the house of the Lord our God, to geue vs meate in al the
time of our bondage.  81 And when we serued, we were not forsaken of the
Lord our God:  but he sette vs in fauour, appointing the kinges of the
Persians to geue us meate, 82 and to glorifie the temple of the Lord our
God, and to build the desolations of Sion, to geue vs stabilitie in
Iurie, and Ierusalem.  83 And now what say we Lord, hauing these thinges?
For we haue transgressed thy preceptes, which thou gauest into the handes
of thy seruantes the prophetes, 84 saying:  That the land into which ye
entred to possesse the inheritance therof, is a land polluted with the
coinquinations of the strangers of the land, and their vncleanes hath
filled it wholy with their filthines.  85 And now your daughters you shal
not match with their sonnes, and their daughters you shal not take for
your sonnes.  86 And you shal not seeke to haue peace with them for euer,
that growing strong you may eate the best things of the land, and may
distribute the inheritance to your children for euer.  87 And the thinges
that happen to vs, al are done for our nauhtie workes, and our great
sinnes.  88 And thou gauest vs such a roote, and we are returned againe
to transgresse thy ordinances, that we would be mingled with the
vncleannes of the nations of this land.  89 Wilt not thou be wrath with
vs to destroy vs, til there be no roote left nor our name?  90 Lord God
of Israel thou art true.  For there is a roote left vntil this present
day.  91 Behold, now we are in thy sight in our iniquities.  For it is
not to stand any longer before thee in these matters.  92 And when Esdras
with adoration confessed weeping, lying flat on the ground before the
temple, there were gathered before him out of Ierusalem a verie great
multitude, men and wemen, and yong men and yong wemen.  For there was
great weeping in the multitude it self.  (1 Esd 10:1)  93 And when he had
cried, Iechonias of Ieheli of the children of Israel, sayd to Esdras:  We
haue sinned against our Lord, for that we haue taken vnto vs in mariage
strange wemen of the nations of the land.  94 And now thou art ouer al
Israel, in these therfore let there be an othe from our Lord to expel al
our wiues that are of strangers with their children.  95 As it was
decreed to thee of the ancesters according to the law of our Lord, rising
vp declare it.  96 For to thee the busines perteineth, and we are with
thee:  doe manfully.  97 And Esdras rysing vp adiured the princes of the
Priestes and Leuites, and al Israel to doe according to these thinges and
they sware.



CHAP. IX.


Esdras fasting for the sinnes of the people, commandeth that they
separate al strange wemen from them.  18. The Priestes and Leuites, which
had offended herein, are recited.  38 He readeth the law before the
people:  48 certaine doe expound to the multitudes in seueral places.
52 And so they are dismissed with ioy.

AND Esdras rysing vp from before the court of the temple, went into the
chamber of Ionathas the sonne of Nasabi.  (1 Esd 10:6)  2 And lodging
there he tasted no bread, nor dranke water for the iniquitie of the
multitude.  3 And there was proclamation made in al Iurie, & in Ierusalem
to al that were of the captiuitie gathered in Ierusalem, 4 that whosoeuer
shal not appeare with in two or three dayes, according to the iudgement
of the ancients sitting vpon it, their goods should be taken away, and
himselfe should be iudged an alien from the multitude of the captiuitie.
5 And al were gathered that were of the tribe of Iuda, and of Beniamin
within three dayes in Ierusalem:  this is the ninth moneth, the twentith
day of the moneth.  6 And al the multitude sate in the court of the
temple trembling, for the present winter.  7 And Esdras rysing vp sayd to
them:  You haue done vnlawfully taking to you in mariage strang wiues,
that you might adde to the sinnes of Israel.  8 And now geue confession,
& magnificence to our Lord the God of our fathers:  9 and accomplish his
wil, and depart from the nations of the land, and from your wiues the
strangers.  10 And al the multitude cried, and they sayd with a lowde
voice:  As thou hast sayd, we wil doe.  11 But because the multitude is
great, and winter time, and we can not stand in the ayre without succour:
and this is a worke for vs not of one day, nor of two, for we haue sinned
much in these thinges:  12 Let the rulers of the multitude stand, and
that dwel with vs, and as manie as haue with them forreine wiues, 13 and
at a time appointed let the priestes out of euerie place, and the iudges
assist, vntil they appeaze the wrath of our Lord concerning this busines.
14 And Ionathas the sonne of Ezeli, and Ozias of Thecam tooke vpon them
according to these wordes:  and Bosoramus, and Leuis, and Sabbathaeus,
wrought together with them.  15 And al that were of the captiuitie stood
according to al these thinges.  16 And Esdras the priest chose vnto him
men the great princes of their fathers according to their names:  & they
sate together in the newmoone of the tenth moneth to examine this
busines.  17 And they determined of the men that had outlandish wiues,
vntil the newmoone of the first moneth.  18 And there were found of the
priestes entermingled that had outlandish wiues.  19 Of the sonnes of
Iesus the sonne of Iosedec, and his brethren:  Maseas, and Eleazarus, and
Ioribus, and Ioadeus, 20 and they put to their handes to expel their
wiues:  and to offer a ramme to obtayne pardon for their ignorance.
21 And the sonnes of Semmeri:  Maseas and Esses, Ieelech, and Azarias.
22 And of the children of Fofere:  Limosias, Hismaenis, and Nathanee,
Iussio, Reddus, and Thalsas.  23 And of the Leuites:  Iorabdus, and
Semeis, and Colnis, and Calitas, and Facteas, and Coluas, and Eliomas,
24 and of the sacred singing men, Eliasib, Zaccarus.  25 And of the
porters, Salumus, and Tolbanes.  26 And of Israel:  of the sonnes of
Foro, Ozi, and Remias, and Geddias, & Melchias, and Michelus, Eleazarus,
and Iammebias, and Bannas.  27 And of the sonnes of Iolaman:  Chamas, and
Zacharias, and Iezuelus, and Ioddius, and Erimoth, and Helias.  28 And of
the sonnes of Zathoim:  Eliadas, and Liasumus, Zochias, and Larimoth, &
Zabdis, and Thebedias.  29 And of the sonnes of Zebes:  Ioannes, and
Amanias, and Zabdias, and Emeus.  30 And of the sonnes of Banni:  Olamus,
& Maluchus, and Ieddeus, and Iasub, and Azabus, & Ierimoth.  31 And of
the sonnes of Addin:  Nathus, and Moosias, & Caleus, and Raanas, Maaseas,
Mathathias, and Beseel, and Bonnus, and Manasses.  32 And of the sonnes
of Nuae:  Noneas, and Aseas, and Melchias, and Sameas, and Simon,
Beniamin, and Malchus, and Marras.  33 And of the sonnes of Asom:
Carianeus, Mathathias, & Bannus, & Eliphalach, and Manasses, and Semei.
34 And of the sonnes of Banni:  Ieremias, and Moadias, and Abramus, &
Iohel, and Baneas, & Pelias, and Ionas, and Marimoth, & Eliasib, and
Matheneus, and Eliasis, and Orizas, and Dielus, and Semedius, & Zambris,
and Iosephus.  35 And of the sonnes of Nobei:  Idelus, and Mathathias,
and Sabadus, and Zecheda, Zedmi, and Iessei, Baneas.  36 Al these maried
outlandish wiues, and did put them away with their children.  37 And the
Priestes and the Leuites, and they that were of Israel, dwelt in
Ierusalem, and in the whole countrie in the newmoone of the seuenth
moneth.  And the children of Israel were in their habitations.  38 And al
the multitude was gathered together into the court, which is on the east
of the sacred gate:  39 and they sayd to Esdras the high priest, and
reader, that he should bring the law of Moyses, which was deliuered of
our Lord the God of Israel.  40 And Esdras the high priest brought the
law to al the multitude of them from man vnto woman, and to al the
priestes to heare the law in the newmoone of the seuenth moneth.  41 And
he read in the court, which is before the sacred gate of the temple, from
breake of day vntil euening before men and wemen.  And they al gaue their
minde to the law.  42 And Esdras the priest, and reader of the law stoode
vpon a tribunal of wood, which was made.  43 And by him stood Mathathias,
and Samus, and Ananias, Azarias, Vrias, Ezechias, and Balsamus on the
right hand, 44 and on the left Faldeus, Misael, Malachias, Ambusthas,
Sabus, Nabadias, and Zacharias.  45 And Esdras tooke the booke before al
the multitude:  for he was chiefe in glorie in the sight of al.  46 And
when he had ended the law, they stood al vpright:  and Esdras blessed our
Lord the most high God, the God of Sabaoth omnipotent.  47 And al the
people answered:  Amen.  And lifting vp their handes falling on the
ground, they adored our Lord.  48 Iesus and Banaeus, and Sarebias, and
Iaddimus, and Accubus, and Sabbathaeus, and Calithes, & Azarias, and
Ioradus, and Ananias, and Philias Leuites, 49 who taught the law of our
Lord, and read the same in the multitude, & euerie one preferred them
that vnderstood the lesson.  50 And Atharathes sayd to Esdras the high
priest and the reader, and to the Leuites, that taught the multitude,
51 saying:  This day is sancitified to our Lord.  And they al wept, when
they had heard the law.  52 And Esdras sayd, departing therfore eate ye
al the fattest thinges, & drinke al most swete things, and send giftes to
them that haue not.  53 For this is the holy day of our Lord, & be not
sad.  For our Lord wil glorifie you.  54 And the Leuites denounced openly
to al, saying:  This day is holie, be not sad.  55 And they went al to
eate, and drinke, and make merie, and to geue giftes to them that had
not, that they might make merie, for they were excedingly exalted with
the wordes that they were taught.  56 And they were al gathered in
Ierusalem to celebrate the ioy, according to the testament of our Lord
the God of Israel.




THE FOVRTH BOOKE OF ESDRAS.



CHAP. I.


Esdras is sent to expostulate with the vngratful Iewes for neglecting
Gods manie great benefites.

THE second book of Esdras the prophet, the sonne of Sarei, the sonne of
Azarei, the sonne of Helcias, the sonne of Sadanias, the sonne of Sadoch,
the sonne of Achitob, (1 Esd 7:1) 2 the sonne of Achias, the sonne of
Phinees, the sonne of Heli, the sonne of Amerias, the sonne of Asiel, the
sonne of Marimoth, the sonne of Arna, the sonne of Ozias, the sonne of
Borith, the sonne of Abisei, the sonne of Phinees, the sonne of Eleazar,
3 the sonne of Aaron of the tribe of Leui; who was captiue in the
countrie of the Medes, in the reigne of Artaxerxes king of the Persians.
4 And the word of our Lord came to me, saying:  5 Goe, and tel my people
their wicked deedes, and their children the iniquities, that they haue
done against me, that they may tel their childrens children:  6 because
the sinnes of their parentes are increased in them, for they being
forgetful of me haue sacrified to strange goddes.  7 Did not I bring them
out of the land of AEgypt from the house of bondage?  But they haue
prouoked me, & haue despised my counsels.  8 But doe thou shake of the
heare of thy head, and throw al euils vpon them:  because they haue not
obeyed my law.  And it is a people without discipline.  9 How long shal I
beare with them, on whom I haue bestowed so great benefiates?  10 I haue
ouer throwen manie kinges from them.  I haue stroke Pharao with his
seruantes, and al his hoste.  (Ex 14)  11 Al nations did I destroy before
their face, & in the East I dissipated the peoples of two prouinces Tyre
and Sidon, and I slew al their aduersaries.  12 But speake thou to them,
saying:  Thus sayth our Lord:  13 I made you passe through the sea, and
gaue you fensed streates from the beginning.  I gaue you Moyses for your
gouernour, and Aaron for the Priest:  14 I gaue you light by the piller
of fire, & did manie meruelous things among you:  but you haue forgotten
me, sayth our Lord.  (Ex 13)  15 Thus sayth our Lord omnipotent:  The
quayle was a signe to you, I gaue you a campe for defense, and there you
murmured:  16 And you triumphed not in my name for the destruction of
your enemies, but yet vntil now you haue murmured.  (Ex 16)  17 Where
are the benefites, that I haue geuen you?  Did you not crie out to me
when you were hungrie in the desert, 18 saying:  Why hast thou brought vs
into this desert to kil vs?  it had bene better for vs to serue the
AEgyptians, then to dye in this desert.  (Num 14)  19 I was sorie for
your mournings, & gaue you manna to eate.  You did eate bread of Angels.
(Ex 16 / Wis 16:20)  20 When you thirsted did not I cleaue the rocke, &
waters flowed in abundance?  for the heates I couered you with the leaues
of trees.  21 I deliuered vnto you fatte landes:  The Chananeites, and
Pherezeites, and Philistheans I threw out from your face:  what shal I
yet doe to you, sayth our Lord?  (Isa 9:4)  22 Thus sayth our Lord
omnipotent:  In the desert when you were thirstie in the riuer of the
Amorrheites, and blasphemeing my name, (Ex 15:25) 23 I gaue you not fire
for blasphemies, but casting wood into the water, I made the riuer swete.
24 What shal I doe to thee Iacob?  Thou wouldest not obey o Iuda.  I wil
transferre my self to other nations, and wil geue them my name, that they
may keepe my ordinances.  (Ex 32)  25 Because you haue forsaken me, I
aslo forsake you:  when you aske mercie of me, I wil not haue mercie.
(Isa 1:15)  26 When you shal inuocate me, I wil not heare you.  For you
haue defiled your handes with bloud, and your fete are quicke to commit
murders.  27 Not as though you haue forsaken me, but yourselues, sayth
our Lord.  28 Thus saith our Lord omnipotent, haue not I desired you, as
a father his sonnes, and a mother her daughters, and as a nurce her litle
ones, 29 that you would be my people, and I your God, and to me for
children, and I to you for a father?  30 So haue I gathered you, as the
henne her chickenes vnder her winges.  But now what shal I doe to you?  I
wil throw you from my face.  (Matt 23:37)  31 When you shal bring me
oblation, I wil turne away my face from you.  (Isa 66:5)  For I haue
refused your festiual dayes, & newmoones, and circumcisions.  32 I sent
my seruantes the prophetes to you, whom being taken you slew, and mangled
their bodies, whose bloud I wil require, sayth our Lord.  33 Thus sayth
our Lord omnipotent, your house is made desolate, I wil throw you away,
as the winde doth stubble, 34 and your children shal not haue issue:
because they haue neglected my commandment, and haue done that which is
euil before me.  35 I wil deliuer your houses to a people comming, who
not hearing me do beleue:  to whom I haue not shewed signes, they wil do
the thinges that I haue commanded.  36 The prophetes they haue not sene,
and they wil be mindful of their iniquities.  37 I cal to witnes the
grace of the people comming, whose litle ones reioyce with ioy, not seing
me with their carnal eyes, but in spirit beleuing the thinges that I haue
sayd.  38 And now brother behold what glorie:  and see people comming
from the east, 39 to whom I wil geue the conduction of Abraham, Isaac,
and Iacob, and of Osee, and Amos, and of Ioel, and Abdias, and Ionas, and
Michaeas, 40 and Naum and Habacuc, of Sophonias, Aggaeus, Zacharias, and
Malachias, who also is called the Angel of our Lord.  (Mal 3:1)



CHAP. II.


The Synagogue expostulateth with her children for their ingratitude;
10. shewing that they shal be forsaken, and the gentiles called.

THVS saith our Lord:  I brought this people out of bondage, to whom I
gaue commandment by my seruantes the Prophetes, whom they would not
heare, but made my counsel frustrate.  2 Their mother that bare them,
sayth to them:  Goe children, because I am a wydow and forsaken.  3 I
brought you vp with ioy, & haue lost you with mourning & sorow, because
you haue sinned before our Lord your God, & haue done that which is euil
before him.  4 But now what shal I doe to you?  I am a wydow and
desolote, goe my children, & aske mercie of our Lord.  5 And I cal thee o
father a witnes vpon the mother of the children, that would not keepe my
testament, 6 that thou geue them confusion, & their mother into spoile,
that there be no generation of them.  7 Let their names be dispersed into
the Gentiles, let them be destroyed out of the land:  because they haue
despised my sacrament.  8 Woe be to thee Assur, which hidest the wicked
with thee.  Thou naughtie nation, remember what I did to Sodom &
Gomorrha:  (Gen 19:24)  9 whose land lieth in cloddes of pitch, & heapes
of ashes:  so wil I make them, that haue not heard me, saith our Lord
omnipotent.  10 Thus saith our Lord to Esdras:  Tel my pople, that I wil
geue them the kingdom of Ierusalem, which I ment to geue to Isreal.
11 And I wil take to me the glorie of them, and wil geue them eternal
tabernacles, which I had prepared for them.  12 The wood of life shal be
to them for an odour of oyntment, and they shal not labour, nor be
wearied.  13 Goe & you shal receiue.  Aske for your selues a few dayes,
that they may abide.  Now the kingdom is prepared for you, watch ye.
14 Cal thou heauen and earth to witnes:  for I haue destroyed euil, and
haue created good, because I liue sayth our Lord.  15 Mother embrace thy
children, bring them vp with ioy.  As a doue confirme their feete:
because I haue chosen thee, sayth our Lord.  16 And I wil raise againe
the dead out of their places, and out of the monumentes I wil bring them
forth, because I haue knowen my name in Israel.  17 Feare not o mother of
the children, because I haue chosen thee, saith our Lord.  18 I wil send
thee ayde, my seruantes I saie, and Ieremie, at whose counsel I haue
sanctified, and prepared for thee tweleue trees loden with diuerse
fruites, 19 and as manie fountaines flowing milke and honie:  and seuen
huge mountaines, hauing the rose and the lilie, in the which I wil fil
thy children with ioy.  (Ex 15:27)  20 Iustifie thou the widow, iudge for
the pupil, geue to the needie, defend the orphane, cloth the naked,
21 cure the broken & feeble, mocke not the lame, defend the maimed, and
admitte the blind to the vision of my glorie.  22 The old man & the yong
keepe with in thy walles:  23 where thou shalt finde the dead, committe
them to the graue signing it, & I wil geue thee the first seate in my
resurrection.  (Tob 1:20)  24 Pause and rest my people, because thy rest
shal come.  25 As a good nurce nourish thy children, confirme their
feete.  26 The seruantes that I haue geuen thee, none of them shal
perish.  For I wil require them of thy number.  27 Be not wearied.  For
when the day of affliction and distresse shal come, others shal weepe,
and be sad, but thou shalt be merie and plenteous.  28 The gentiles shal
enuie, and shal be able to doe nothing against thee, sayth our Lord.
29 My handes shal couer thee, that thy children see not hel.  30 Be
pleasant thou mother with thy children, because I wil deliuer thee sayth
our Lord.  31 Remember thy children that sleepe, for I wil bring them out
of the sides of the earth, & wil doe mercie with them:  because I am
merciful, sayth our Lord omnipotent.  32 Embrace thy children til I come,
& shew them mercie:  because my fountaines runne ouer, and my grace shal
not faile.  33 I Esdras receiued commandment of our Lord, in mount Oreb;
that I should goe to Israel:  to whom when I came, they refused me, and
reiected the commandement of our Lord.  34 And therfore, I say vnto you
gentiles, which heare, and vnderstand, Looke for your pastor, he wil geue
you the rest of eternitie:  because he is at hand, that shal come in the
end of the world.  35 Be ye readie for the rewardes of the kingdom,
because perpetual light shal shine to you for time euerlasting.  36 Flee
from the shadow of this world:  receiue ye the pleasantnes of your
glorie.  I openly cal to witnes my sauiour.  37 Receiue the commended
gift and be pleasant, geuing thankes to him that called you to the
heauenlie kingdomes.  38 Arise, & stand & see the number of them that are
signed in the feast of our Lord.  39 They that haue transferred them
selues from the shadow of the world, haue receiued glorious garmentes of
our Lord.  40 Receiue o Sion thy number, and shut vp thyne made white,
which haue accomplished the law of our Lord.  41 The number of thy
children, which thou didst wish is ful.  Desire the powre of our Lord
that thy people may be sanctified, which was called from the beginning.
42 I Esdras saw in mount Sion a great multiude, which I could not number,
and they did al prayse our Lord with songes.  (Apoc 7:9)  43 And in the
middes of them was a young man high of stature, appearing aboue ouer them
al, & he put crownes vpon euerie one of their heades, and he was more
exalted.  And I was astonied at the miracle.  44 Then asked I an Angel,
and sayd:  Who are these Lord?  45 Who answering sayd to me:  These are
they that haue laid of the mortal garment, and taken an immortal, and
haue confessed the name of God.  Now they are crowned, and receiue
palmes.  46 And I sayd to the Angel:  That yongman what is he, which
putteth the crownes vpon them, and geueth palmes into their handes?
47 And answering he sayd to me:  The same is the Sonne of God, whom they
did confesse in the world:  & I begane to magnifie them, that stood
strongly for the name of our Lord.  48 Then sayd the Angel to me:  Goe,
tel my people, what maner of meruelous thinges and how great, thou hast
sene of the Lord God.



CHAP. III.


The workes of God are wonderful from the beginning, 7. and men vngrateful
13. In Abraham God chose to himself a peculiar people:  who neuertheles
were froward, and obstinate.  23. He also chose Dauid, but stil the
people were sinful:  28. the Babylonians also, by whom the are afflicted,
are no lesse but rather greater sinners.

IN the thirteth yeare of the ruine of the citie I was in Babylon, and was
trubled lying in my chamber, and my cogitations came vp ouer my hart:
2 because I saw the desolation of Sion, and the abundance of them that
dwelt in Babylon.  3 And my spirit was tossed excedingly, and I began to
speake to the highest timorous wordes, 4 and sayd:  O Lord dominatour
thou spakest from the beginning, when thou didst plant the earth, and
that alone, and didst rule ouer the people, (Gen 1) 5 and gauest Adam a
dead bodie:  but that also was the worke of thy handes, & didst breath
into him the spirit of life, and he was made to liue before thee:
(Gen 2:7)  6 and thou broughst him into paradise, which thy right hand
had planted, before the earth came.  7 And him thou didst command to loue
thy way, and he transgressed it, & forth with thou didst institute death
in him, and in his posteritie, and there were borne nations, and tribes,
and peoples, and kindreds, wherof there is no number.  8 And euerie
nation walked in their owne wil, & they did meruelous thinges before
thee, and despised thy preceptes.  9 And agane in time thou broughst in
the floud vpon inhabitantes of the world, and didst destroy them.
(Gen 7)  10 And there was made in euery one of them, as vnto Adam to dye,
so to them the floud, 11 But thou didst leaue one of them, Noe with his
house and of him were al the iust.  12 And it came to passe, when they
began to be multiplied, that dwelt vpon the earth, & multiplied children
and peoples and manie nations:  and they begane againe to doe impietie
more then the former.  13 And it came to passe when they did iniquitie
before thee, thou didst choose thee a man of them whose name was Abraham.
14 And thou didst loue him and to him onlie thou didst shew thy wil.
(Gen 12)  15 And thou didst dispose vnto him an euerlasting testament,
and toldst him that thou wouldst neuer forsake his seede.  And thou
gauest him Issac, and to Isaac thou gauest Iacob and Esau.  16 And Iacob
thou didst seuer to thy selfe, but Esau thou didst separate.  And Iacob
grewe to a great multitude.  17 And it came to passe when thou didst
bring forth his sede out of AEgypt, thou broughst it vpon mount Sinai.
(Ex 19)  18 And thou didst bowe the heauens, and fasten the earth, and
didst shake the world, and madest the depthes to tremble, and trubledst
the world, 19 and thy glorie passed foure gates of fire, and of
earthquake, and winde, and frost, that thou mightst geue a law to the
seede of Iacob, and to the generation of Israel diligence.  20 And thou
didst not take away from them a malignant hart, that thy law might bring
forth fruite in them.  21 For Adam the first bearing a vicious hart
transgressed and was ouercome, yea and al that were borne of him.  22 And
it was made a permanent infirmitie, and the law with the hart of the
people, with the wickednes of the roote, and that which is good departed,
and the wicked remayned.  23 And the times passed, & the yeares were
ended:  and thou didst raise vp vnto thee a seruant named Dauid, 24 and
spakest vnto him to build a citie of thy name, and to offer vnto thee in
it frankencense, and oblations.  25 And this was done manie yeares, and
they that inhabited the citie forsooke thee, 26 in al things as Adam and
al his generations.  For they also vsed a wicked hart.  27 And thou didst
deliuer thy citie into the hands of thyne enimies.  28 Why, doe they
better thinges, that inhabite Babylon?  And for this shal she rule ouer
Sion?  (Jer 12)  29 It came to passe when I was come hither, and had sene
the impieties that can not be numbred:  and my soul saw manie offending
this thirteth yeare, & my hart was astonied:  30 because I saw how thou
bearest with their sinne, and didst spare them that did impiously, and
didst destroy thine owne people, and preserue thine enimies, and didst
not signifie it.  31 I nothing remember how this way should be forsaken:
doth Babylon better thinges then Sion?  32 Or hath anie nation knowen
thee beside Israel:  or what tribes haue beleued thy testamentes as
Iacob?  33 Whose reward hath not appeared, nor their labour fructified.
For passing through I passed among the nations, and I saw them abound,
and not mindeful of thy commandmentes.  34 Now therfore wey our
iniquities in a ballance, and theirs that dwel in the world:  & thy name
shal not be found, but in Israel.  35 Or when haue not they sinned in thy
sight, that inhabite the earth?  or what nation hath so obserued thy
commandmentes?  36 These certes by their names thou shalt finde to haue
kept thy commandments, but the nations thou shalt not finde.



CHAP. IIII.


Mans witte and reason is not able to vnderstand the counsel and iudgement
of God, 22. why his people are afflicted by wicked nations, 33. nor of
times, and thinges to come.

AND the Angel answered me, that was sent to me, whose name was Vriel,
2 and sayd to me:  Thy hart exceding hath exceded in this world, & thou
thinkest to comprehend the way of the Highest.  3 And I sayd:  It is so
my Lord.  And he answered me, & sayd:  I am sent to shew thee three
wayes, & to propose to thee three similitudes.  4 Of the which if thou
shalt declare to me one of them, I also wil shew thee the way which thou
desirest to see, and wil teach thee whence a wicked hart is.  5 And I
sayd, Speak my Lord.  And he sayd to me:  Goe, wey me the weight of the
fire, or measure me the blast of the winde, or cal me backe the day that
is past.  6 And I answered, and sayd:  what man borne can doe it, that
thou askest me of these thinges?  7 And he sayd to me:  If I should aske
thee, saying:  How great habitations are there in the hart of the sea, or
how great vaines be there in the beginning of the depth, or how great
vaines be there aboue the firmament, and what are the issues of paradise:
8 thou wouldest perhaps say to me:  I haue not descended into the depth,
nor into hel as yet, neither haue I ascended at anie time into heauen.
9 But now I haue not asked thee, sauing of the fire, and the winde, and
the day by the which thou hast passed, and from the which thou canst not
be separated:  and thou hast not answered me of them.  10 And he sayd to
me:  Thou canst not know the thinges that are thine which grow together
with thee:  11 and how can thy vessel comprehend the way of the Highest,
and now the world being outwardly corrupted, vnderstand the corruption
euident in my sight:  12 I sayd to him:  Better were it for vs not to be,
then yet liuing to liue in impieties, and to suffer, and not to
vnderstand for what thing.  13 And he answered me, & said:  Going forth I
went forward to a wood of trees in the filde, and they deuised a deuise,
(Judges 9 / 2 Par 25) 14 and said:  Come and let vs goe, and make warre
against the sea, that it may retyre backe before vs, and we may make vs
other woodes.  15 And in like maner the waues of the sea they also
deuised a deuise, and sayd:  Come let vs goe vp, let vs ouerthrow the
woodes of the filde, that there also we may consummate an other countrie
for our selues.  16 And the woodes deuise was made vaine, for fire came,
and consumed it.  17 Likewise also the deuise of the waues of the sea.
For the sand stood, & stayed them.  18 For if thou wert iudge of these,
whom wouldest thou begin to iustifie, or whom to condemne?  19 And I
answered, and sayd:  Verely they deuised a vayne deuise.  For the earth
is geuen to the wood, and a place to the sea to carie her waues.  20 And
he answered me, and sayed:  Thou hast iudged wel, and why hast thou not
iudged for thy self?  21 For as the earth is geuen to the wood, and the
sea for the waues therof:  so they that inhabite vpon the earth, can
vnderstand onlie the thinges that are vpon the earth:  and they vpon the
heauens, the thinges that are aboue the height of the heauens.  22 And I
answered, and sayd:  I besech thee Lord, that sense may be geuen me to
vnderstand.  23 For I meant not to aske of thy superiour thinges, but of
those that passe by vs dayly.  For what cause Israel is geuen into
reproche to the gentiles, the people whom thou hast loued, is geuen to
impious tribes, & the law of our fathers is brought to destruction, & the
written ordinances are no where:  24 and we haue passed out of the world,
as locustes, and our life is astonishment and dreade, and we are not
worthie to obtaine mercie.  25 But what wil he doe to his name that is
inuocated vpon vs?  and of these thinges I did aske.  26 And he answered
me, and sayd:  If thou search very much, thou shalt often meruail:
because the world hastening hasteneth to passe, 27 and can not comprehend
the thinges which in times to come are promised to the iust:  because
this world is ful of iniustice and infirmities.  28 But conerning the
thinges that thou demandest I wil tel thee:  for the euil is sowed, and
the destruction therof is not yet come.  29 If then that which is sowen
be not turned vp, and the place depart where the euil is sowen, that shal
not come where the good is sowen.  30 Because the grayne of il seede hath
bene sowen in the hart of Adam from the beginning:  and how much impietie
hath it ingendered vntil now, and doth ingender vntil the floore come?
31 And esteme with thy self the graine of the il seede, how much fruite
of impietie it hath ingendred:  32 When the eares shal be cut, which are
innumerable, what a great floore wil they begin to make?  33 And I
answered, and sayd:  How, and when shal these things be?  why are our
yeares few and euil?  34 And he answered me, and sayd to me, Hasten not
aboue the Highest.  For thou doest hasten in vaine to be aboue him, for
thy excesse is much.  35 Did not the soules of the iust in the cellars,
aske of these things, saying:  How hope I so, and when shal the fruite
come of the floore of our reward?  36 And Ieremiel the Archangel answered
to those things, and sayd:  When the number of the sedes in you shal be
filled, because he hath weyed the world in a balance, 37 and with a
measure hath he measured the times, and in number he hath numbered the
times, and hath not moued, nor stirred them, vntil the foresayd measure
be filled.  38 And I answered, and sayd:  O Lord Dominatour, we also are
al ful of impietie.  39 And left perhaps for vs the floores of the iust
be not filled, for the sinnes of the inhabitantes vpon the earth.  40 And
he answered me, and sayd:  Goe, and aske a woman with childe, if when
she hath accomplished her nine monethes, her wombe can yet hold the
infant within it?  41 And I sayd it can not Lord.  And he sayd to me, in
hel the cellars of the soules are like to the matrice.  42 For as she
that is:  In trauail maketh hast, to escape the necessitie of trauailing:
so this also hasteneth to render those thinges which are commended to it.
43 From the beginning it shal be shewed thee touching those thinges,
which thou doest couet to see.  44 And I answered, and sayd:  If I haue
found grace before thine eyes, & if it be possible, and if I by fitte,
45 shew mee if there be more to come then is passed, or more things haue
passed, then are to come.  46 What passed, I know:  but what is to come,
I know not.  47 And he sayd to me:  Stand vpon the right side, and I wil
shew thee the interpretation of the similitude.  48 And I stood, and saw:
and behold a burning fornace passed before me, & it came to passe when
the flame passed, I saw:  and behold the smoke ouercame.  49 And these
thinges there passed before me a clowd ful of water, and with violence
casting in much raine:  and when the violence of raine was cast, the
droppes therin ouercame.  50 And he sayd to me:  Thinke with thyself, as
the raine increaseth more then the droppes, and the fire then the smoke:
so did the measure that passed, more a bound.  But the droppes, and the
smoke ouercame:  51 and I prayed, & sayd, shal I liue thinkest thou vntil
these dayes?  or what shal be in those dayes?  52 He answered me, and
sayd:  Of the signes wherof thou askest me, in part I can tel thee,
howbeit of thy life I was not sent to tel thee, neither doe I know.



CHAP. V.


Diuers signes of thinges to come are shewed to Esdras by an Angel:
16. for the comforth of the people in captiuitie.

BVT concerning signes:  behold the dayes shal come, wherin they that
inhabite the earth shal be taken in a great number:  and the way of truth
shal be hid:  and the countrie shal be barren from fayth.  2 And
iniustice shal be multiplied aboue that which thy self seest, & aboue
that which thou hast heard in time past.  (Matt 24)  3 And they shal put
their foote into the countrie which now thou seest to reigne, and they
shal see it desolate.  4 And if the Highest geue thee life, thou shalt
see after the third trumpet, and the sunne shal sodenly shine agayne in
the night, and the moone thrise in a day, 5 and out of wood bloud shal
distil, and the stone shal geue his voice, and the peoples shal be moued:
6 and he reigne, whom they hope not that inhabite vpon the earth, and
soules shal make their flight away.  7 & the sea of Sodom shal cast the
fishes, and shal make a noise in the night, which manie knew not, and al
shal heare the voice therof, 8 and there shal be made a confusion in
manie places, and the fire shal often be sent backe, and the sauage
beastes shal goe to other places, and wemen in their monethlie flowers
shal bring forth monsters, 9 and in swete waters shal salt waters be
found, and al frendes shal ouerthrow one an other:  and then shal witte
be hid, and vnderstanding shal be separated into his cellar:  10 and it
shal be sought of manie, and shal not be found:  and iniustice shal be
multiplied, and incontinencie vpon the earth.  11 And one countrie shal
aske her neighbour, and shal say:  Hath iustice doing iust passed
throught thee?  and she shal denie it.  12 And it shal be in that time,
men shal hope, and shal not obtaine:  they shal labour, and their wayes
shal not haue successe.  13 These signes I am permitted to tel thee:  and
if thou pray againe and weepe, as also now, and fast seuen dayes, thou
shalt heare againe greater thinges then these.  14 And I awaked, and my
bodie did shiuer excedingly:  and my soule laboured, that it fainted:
15 and the Angel that came, that spake in me, held me, and strengthened
me, and sette me vpon my feete.  16 And it came to passe in the second
night, and Salathiel the prince of the people came to me, and sayd to me:
Where wast thou?  and why is thy countenance heauie?  17 Knowest thou not
that Isreal is committed to thee in the countrie of their transmigration?
18 Rise vp therfore, and taste bread, and forsake vs not, as the pastour
his flocke in the hand of wicked wolues.  19 And I sayd to him:  Goe from
me, & approch not vnto me.  And he heard, as I sayd:  and he departed
from me.  20 And I fasted seuen dayes howling & weeping, as Vriel the
Angel commanded me.  21 And it came to passe after seuen dayes, and
againe cogitations of my hart molested me very much, 22 and my soule
resumed the spirit of vnderstanding:  & agayne I began to speake wordes
before the Highest:  23 and I sayd:  Lord Dominatour of euerie wood of
the earth, & al the trees therof, thou hast chosen one vineyard:  24 & of
euerie land of the world thou hast chosen thee one ditch:  & of al the
flowers of the world thou hast chosen thee one lilie:  25 and of al
depthes of the sea, thou hast filled thee one riuer:  and of al the
builded cities, thou hast sanctified vnto thyself Sion:  26 and of al
created soules, thou hast named thee one doue:  and of al beastes that
were made, thou hast prouided thee one shepe:  27 and of al multiplied
peoples, thou host purchased thee one people:  and a law approued of al
thou hast geuen to this people, whom thou didst desire.  28 And now Lord,
why hast thou deliuered one vnto manie?  And thou hast perpared vpon one
roote others, and hast dispersed thy onlie one in manie:  29 and they
haue troden vpon it, which gainesayd thy couenants, and which beleued not
thy testamentes.  30 And if hating thou hatest thy people, it ought to be
chastised with thy handes.  31 And it came to passe, when I had spoken
the wordes, and the Angel was sent to me, that came to me before the
night past, 32 and he sayd to me:  Heare me, and I wil instruct thee:
and harken to me, and I wil adde before thee.  33 And I sayd:  Speake my
Lord.  And he sayd to me:  Thou art become excedingly in excesse of minde
for Israel:  hast thou loued it more then him that made it?  34 And I
sayd to him:  No Lord, but for sorow I haue spoken, for my veynes torment
me euerie houre, to apprehend the pathe of the Highest, and to search
part of his iudgement.  35 And he sayd to me:  Thou canst not.  And I
sayd:  Why Lord?  To what was I borne, or why was not my mothers wombe my
graue, that I might not see the labour of Iacob, & the wearines of the
stocke of Israel?  36 And he sayd to me:  Number me the thinges that are
not yet come, and gather me the dispersed droppes, and make me the
withered flowers grene againe, 37 and open me the shut cellars, & bring
me forth the blastes inclosed in them, shew me the image of a voice:  and
then wil I shew thee the labour that thou desirest to see.  38 And I
sayd:  Lord Dominatour, for who is there that can know these thinges, but
he that hath not his habitation with men?  39 And I am vnwise, and how
can I speake of these thinges, which thou hast asked me?  40 And he sayd
to me:  As thou canst not doe one of these thiges, which haue bene sayd:
so canst thou not finde my iudgement, or in the end the charitie, which I
haue promised to the people.  41 And I sayd:  But behold Lord thou art
nigh to them that are nere the end:  and what shal they doe that haue
bene before me, or we, or they after vs?  42 And he sayd to me:  I wil
resemble my iudgement to a crowne.  As there shal not be slacknes of the
last, so neither swiftnes of the former.  43 And I answered, and sayd:
Couldst thou not make them that haue bene, and that are, and that shal
be, at once, that thou mayst shew thy iudgement the quicker?  44 And he
answered me, and sayd:  The creature can not hasten aboue the Creatour,
nor the world sustayne them that are to be created in it, at once.
45 And I sayd:  As thou didst say to thy seruant, that quickening thou
didst quicken the creature created by thee at once, and the creature
susteined it:  it may now also beare them present at once.  46 And he
sayd to me:  Aske the matrice of a woman, & thou shalt say to it:  And if
thou bring forth children, why by times?  Aske it therfore, that it geue
ten at once.  47 And I sayd, it can not verily:  but according to time.
48 And he sayd to me:  And I haue geuen a matrice to the earth for them,
that are sowen vpon it by time.  49 For as the infant bringeth not forth
the thinges that perteyne to the aged, so haue I disposed the world
created of me.  50 And I asked, and sayd:  Wheras thou hast now geuen me
a way, I wil speake before thee:  for our mother, of whom thou toldest
me, yet she is yong:  now draweth nigh to old age.  51 And he answered
me, and sayd:  Aske her that beareth children, and she wil tel thee.
52 For thou shalt say to her:  Why are not they whom thou hast brought
forth, now like to them that were before thee, but lesse of stature?
53 And she also wil say vnto thee:  They that are borne in the youth of
streingth are of one sort, and they of an other, that are borne about the
time of old age, when the matrice fayleth.  54 Consider therfore thou
also, that you are of lesse stature, then they that were before you:
55 and they that are after you, of lesser then you, as it were creatures
now waxing old, and past the strength of youth.  56 And I sayd:  I besech
thee Lord, if I haue found grace before thine eyes, shew vnto thy
seruant, by whom thou doest visite thy creature.



CHAP. VI.


God knowing al thinges before they were made, created them 54. for man:
and considerth the endes of al.

AND he sayd to me:  In the beginning of the earthlie world, and before
the endes of the world stood, and before the congregation of the windes
did blow, (Prov 8) 2 and before the voyces of thunders sounded, & before
the flashinges of lightenings shined, and before the fundations of
paradise were confirmed, 3 and before beautiful flowers were sene, and
before the moued powers were established, and before the innumerable
hostes of Angels were gathered, 4 and before the heightes of the ayre
were aduanced, and before the measures of the firmaments were named, and
before the chymneies were hote in Sion, 5 and before the present yeares
were searched out, and before their inuentions that now sinne, were put
away, and they signed that made fayth their treasure:  6 then I thought,
and they were made by me only, and not by any other:  and the end by me,
and not by any other.  7 And I answered, and sayd:  What separation of
times shal there be?  and when shal the end of the former be, and the
begynning of that which foloweth?  8 And he sayd to me, from Abraham vnto
Isaac, when Iacob and Esau were borne of him, the hand of Iacob held from
the begynning the heele of Esau, 9 for the end of this world is Esau, and
the begynning of the next Iacob.  10 The hand of a man betwen the heele
and the hand.  Aske no other thing Esdras.  11 And I answered, and sayd:
O Lord dominatour, if I haue found grace before thyne eyes, 12 I pray
thee shew thy seruant the end of thy signes, wherof thou didst shew me
part the night before.  13 And he answered, and sayd to me:  Arise vpon
thy feete, and heare a voice most ful of sound.  14 And it shal be as it
were a commotion, neither shal the place be moued wherin thou standest.
15 Therfore when it speaketh be not thou afrayd, because of the end is
the word, and the fundation of the earth vnderstood, 16 for concerning
them the word trembleth and is moued, for it knoweth that their end must
be changed.  17 And it came to passe, when I had heard, I rose vpon my
feete, and I heard:  and behold a voice speaking, and the sound therof as
the sound of manie waters:  18 and it sayd:  Behold the dayes come, and
the time shal be when I wil begyne to approch, that I may visite the
inhabitantes vpon the earth.  19 And when I wil begin to enquire of them
that vniustly haue hurt with their iniustice, and when the humilitie of
Sion shal be accomplished.  20 And when the world shal be ouersigned that
shal beginne to passe, I wil doe these signes:  Bookes shal be opened
before the face of the firmament, and al shal see together, 21 and
infantes of one yeare shal speake with their voices, & wemen with child
shal bring forth vntimely infantes not ripe of three or foure monethes,
and shal liue, and shal be raysed vp.  22 And sodenly shal appeare sowen
places not sowen, & ful cellers shal sodenly be found emptie:  23 and a
trumpet shal sound; which when al shal heare, they wil sodenly be afrayd.
24 And it shal be in that time, freindes as enimies shal ouerthrow
freindes, and the earth shal be afrayd with them:  & the vaynes of
fountaynes shal stand, and shal not runne in three howres:  25 and it
shal be, euerie one that shal be leaft of al these, of whom I haue
foretold thee, he shal be saued, and shal see my saluation, & the end of
your world.  26 And the men that are receiued, shal see, they that tasted
not death from their natiuitie, and the hart of the inhabitantes shal be
turned into an other sense.  27 For euil shal be put out, and deceite
shal be extinguished, 28 but fayth shal florish, and corruption shal be
ouercome, and truth shal be shewed, which was without fruite so manie
dayes.  29 And it came to passe, when he spake to me, & I loe by litle &
litle looked on him before whom I stood, 30 and he sayd to me these
wordes:  I am come to shew thee the time of the night to come.  31 If
therfore thou pray agayne, and fast agayne seuen dayes, agayne I wil tel
thee greater thinges by the day which I haue heard.  32 For thy voice is
heard before the Highest.  For the strong hath sene thy direction, and
hath fore sene the chastitie which thou hast had from thy youth:  33 and
for this cause he hath sent me to shew thee al these thinges, and to say
to thee, haue confidence, and feare not, 34 and hasten not with the
former times to thinke vayne thinges, that thou hasten not from the last
times.  35 And it came to passe after these thinges, and I wept againe,
and in like maner I fasted seuen dayes, to accomplish the three weekes,
that were told me.  36 And it came to passe in the eight night, and my
hart was trubled againe in me, and I began to speake before the Highest.
37 For my spirit was inflamed excedingly, and my soul was distressed.
38 And I sayd:  O Lord, speaking thou didst speake from the beginning of
creature from the first day, saying:  Let heauen be made and earth:  and
thy word was a perfect worke.  39 And then there was spirit, and
darknesse was caried about, and silence, the sound of the voyce of man
was not yet from thee.  40 Then thou didst command the lighsome light to
be brought forth of thy treasures, wherby thy worke might appeare.
41 And in the second day thou didst create the spirit of the firmament,
and commandest it to diuide, and to make a diuision betwen the waters,
that a certayn part should depart vpward, and part should remaine beneth.
42 And in the third day thou didst command the waters to be gathered
together in the seuenth part of the earth:  but sixe partes thou didst
drie and preserue, that of them might be seruing before thee thinges
sowen of God, and tilled.  43 For thy word proceded, and the worke forth
with was made.  44 For sodenly came forth fruite of multitude infinite,
and diurse tastes of concupiscence, and flowers of vnchangeable colour,
and odours of vnsearcheable smel, and in the third day these thinges were
made.  45 And in the fourth day thou didst command to be made the
brightnesse of the sunne, the light of the moone, the disposition of the
starres:  46 and didst command them that they should serue man, that
should be made.  47 And in the fifth day:  thou saydst to the seuenth
part, where the water was gathered together, that it should bring forth
beastes, and foules, and fishes:  and so was it done, 48 the dumme water
and without life, the thinges that by Gods appointement were commanded,
made beastes, that therby the nations may declare thy meruelous workes.
49 And then thou didst preserue two soules:  the name of one thou didst
cal Henoch, and the name of the second thou didst cal Leuiathan, 50 and
thou didst separate them from eche other.  For the seuenth part, where
the water was gathered together, could not hold them.  51 And thou gauest
to Henoch one part, which was dried the third day, to dwelt therin, where
are a thousand mountaynes.  52 But to Leuiathan thou gauest the seuenth
part being moyst, and kepst it, that it might be to deuoure whom thou
wilt, and when thou wilt.  53 And in the sixt day thou didst command the
earth, to create before thee cattel, and beastes, and creeping creatures:
54 and ouer these Adam, whom thou madest ruler ouer al the workes, which
thou didst make, & out of him are al we brought forth, and the people
whom thou hast chosen.  55 And al these thinges I haue sayd before thee o
Lord, because thou didst create the world for vs.  56 But the residue of
the nations borne of Adam thou saydst that they were nothing, and that
they were like to spittle, and as it were the droping out of a vessel
thou didst liken the abundance of them.  57 And now Lord, behold these
nations which are reputed for nothing, haue begune to rule ouer vs, and
to deuoure vs:  58 but we thy people whom thou didst cal thy first onlie
begotten emulatour, are deliuered into their handes:  59 and if the world
was created for vs, why doe not we possesse inheritance with the world?
how long these thinges?



CHAP. VII.


Without tribulations no man can attayne immortal life:  17. which the
iust shal inherite:  and the wicked shal perish.  28. Christ wil come,
and dye for mankind.  36. Prayers of the iust shal profite til the end of
this world, but not after the general iudgement.  48. Al sinned in Adam.
52. and haue added more sinnes, 57. but it is in mans powre, 62. by Gods
grace, to liue eternally.

AND it came to passe when I had ended to speake these wordes, the Angel
was sent to me, which had bene sent to me the first nights, 2 and he sayd
to me:  Arise Esdras, and heare the wordes which I am come to speake to
thee.  3 And I sayd:  Speake my God.  And he sayd to me:  The sea is set
in a large place, that it might be deepe and wide:  4 but the entrance to
it shal be set in a straict place, that it might be like to riuers.
5 For who witting wil enter into the sea, and see it, or rule ouer it:
if he passe not the streite, how shal he come into the bredth?  6 Also an
other thing:  A citie is built, and set in a plaine place, and it is ful
of al goodes.  7 The entrance therof narrow, and set in a stepe place, so
that on the right hand there was fire, & on the left depe water:  8 and
there is one onlie pathe set betwen them, that is, betwen the fire and
the water, so that the pathe can not conteyne, but onlie a mans steppe.
9 And if the citie shal be geuen a man for inheritance, if he neuer passe
through the peril set before it, how shal he receiue his inhertance?
10 And I sayd:  So Lord.  And he sayd to me, So it is:  Israel also a
part.  11 For I made the world for them:  and when Adam transgressed my
constitution, that was iudged which was done.  12 And the entrance of
this world were made streite, and sorowful, & paynful, and few and euil,
and ful of dangers, & stuffed very much with labour.  13 For the
entrances of the greater world are large andsecure, and making fruite of
immortalitie.  14 If then they that liue entring in enter into these
streite and vayne thinges:  they can not receiue the thinges that are
layd vp.  15 Now therfore why art thou trubled, wheras thou art
corruptible?  and why art thou moued, wheras thou art mortal?  16 And why
hast thou not taken in thy hart that which is to come, but that which is
present?  17 I answered, and sayd:  Lord dominatour:  behold thou hast
disposed by thy law that the iust shal inherite these thinges, and the
impious shal perish.  (Deut 8)  18 But the iust shal suffer the streites,
hoping for the wyde places, for they that haue done impiously, haue both
suffered the streites, and shal not see the wide places.  19 And he sayd
to me:  There is no iudge aboue God, nor that vnderstandeth aboue the
Highest.  20 For manie present doe perish, because the law of God which
was set before, is neglected.  21 For God commanding commanded them that
came, when they came, what doing they should liue, and what obseruing
they should not be punished.  22 But they were not perswaded, and
gaynesayd him, and made to them selues a cogitation of vanitie, 23 and
proposed to them selues deceites of sinnes, & they sayd to the Highest
that he was not, and they knew not his wayes, 24 and dispised his law,
and denyed his couenaunces, and had not fidelitie in his ordinances, and
did not accomplish his workes.  25 For this cause Esdras, the emptie to
the emptie, and the ful to the ful.  26 Behold the time shal come, and it
shal be when the signes shal come, which I haue foretold thee, and the
bride shal appeare, and appearing she shal be shewed that now is hid with
the earth:  27 and euerie one that is deliuered from the foresaid euils,
he shal see my meruelous thinges.  28 For my sonne IESVS shal be reueled
with them that are with him, and they shal be merie that are leaft in the
foure hundred yeares.  29 And it shal be after these yeares, and my sonne
CHRIST shal dye:  and al men that haue breath, 30 and the world shal be
turned into the old silence seuen dayes, as in the former iudgementes, so
that none shal be leaft.  31 And it shal be after seuen dayes, and the
world shal be raysed vp that yet waketh not, and shal dye corrupted:
32 and the earth shal render the thinges that sleepe in it, & the dust
them that dwel in it with silence, and the cellars shal render the soules
that are commended to them.  33 And the Highest shal be reueled vpon the
seate of iudgement, and miseries shal passe, and long sufferance shal be
gathered together.  34 And iudgement onlie shal remayne, truth shal
stand, and fayth shal waxe strong, 35 and the worke shal folow, and the
reward shal be shewed, and iustice shal awake, and iniustice shal not
haue dominion.  [See note below.]  36 And I sayd:  First Abraham prayed
for the Sodomites, and Moyses for the fathers that sinned in the desert.
(Gen 18 / Ex 32)  37 And they that were after him for Isreal in the dayes
of Achaz, and of Samuel, 38 and Dauid for the destruction, and Salomon
for them that came vnto the sanctification.  (2 Kings 24:17 / 2 Par 6:13)
39 And Elias for them that receiued raine, and for the dead that he might
liue, (3 Kings 17 & 18) 40 and Ezechias for the people in the dayes of
Sennacherib, and manie for manie.  (4 Kings 19:15)  41 If therfore now
when corruptible did increase, and iniustice was multiplied, and the iust
prayed for the impious:  why now also shal it not be so?  42 And he
answered me and sayd:  This present world is not the end, much glorie
remaineth in it:  for this cause they prayed for the impotent.  43 For
the day of iudgement shal be the end of this time, and the beginning of
the immortalitie to come, wherein corruption is past:  44 intemperance is
dissolued, incredulitie is cut of:  and iustice hath increased, truth is
strong.  45 For then no man can saue him that hath perished, nor drowne
him that hath ouercome.  And I answered, 46 and sayd:  This is my word
the first and the last, that it had bene better not to geue the earth to
Adam, or when he had now geuen it, to restraine him that he should not
sinne.  47 For what doth it profit men presently to liue in sorow, and
being dead to hope for punishment?  48 O what hast thou done Adam?  For
if thou didst sinne, it was not made thy fal only, but ours also which
came of thee.  (Rom 5:12)  49 For what doth it profit vs if immortal time
be promised to vs:  but we haue done mortal workes?  50 And that
euerlasting hope is foretold vs:  but we most wicked are become vayne?
51 And that habitations of health and securitie are reserued for vs, but
we haue conuerst naughtely?  52 And that the glorie of the Highest is
reserued to protect them that haue slowly conuerst:  but we haue walked
in most wicked wayes.  53 And that paradise shal be shewed, whose fruite
continueth incorrupted, wherin is securitie and remedie:  54 but we shal
not enter in:  for we haue conuerst in vnlawful places.  55 And their
faces which haue had abstinence, shal shyne aboue the starres:  but our
faces blacke aboue darkenes.  56 For we did not thinke liuing when we
did iniquitie, that we shal beginne after death to suffer.  57 And he
answered, and sayd:  This is the cogitation of the battel which man shal
fight, who is borne vpon the earth, 58 that if he shal be ouercome, he
suffer that which thou hast sayd:  but if he ouercome he shal receiue
that which I say:  59 for this is the life which Moyses spake of when he
liued, to the people, saying:  Choose vnto thee life, that thou mayst
liue.  (Deut 30:19)  60 But they beleued him not, no nor the Prophetes
after him, no nor me which haue spoken to them.  61 Because there should
not be sorow vnto their perdition, as there shal be ioy vpon them, to
whom saluation is perswaded.  62 And I answered, and sayd:  I know Lord,
that the Highest is called merciful in that, that he hath mercie on them
which are not yet come into the world, 63 and that he hath mercie on them
which conuerse in his law:  64 and he is long suffering, because he
sheweth long sufferance to them that haue sinned, as it were with their
owne workes:  65 and he is bountiful, because he wil geue according to
exigentes:  66 and of freat mercie, because he multiplieth more mercies
to them that are present, and that are past, and that are to come.
67 For if he shal not multiplie his mercies, the world shal not be made
aliue with them that did inherite it.  68 And he geueth:  for if he shal
not geue of his bountie, that they may be releeued which haue done
iniquitie, the tenth thousand part of men can not be quickned from their
iniquities.  69 And the iudge if he shal not forgeue them that are cured
with his word, and wype away a multitude of contentions:  there should
not perhaps be leaft in an innumerable multitiude, but very few.



CHAP. VIII.


God is merciful in this world, yet fewe are saued.  6. Gods workes, and
disposition of his creatures are meruelous.  15. Esdras prayeth for the
people of Israel:  37. and saluation is promised to the iust, and
punishment threatned to the wicked.

AND he answered me, & sayd:  This world the Highest made for manie, but
that to come for few.  2 And I wil speake a similitude Esdras before
thee.  For as thou shalt aske the earth, and it wil tel thee, that it wil
geue much more earth wherof earthen worke may be made, but a litle dust
wherof gold is made:  so also is the act of this present world.  3 Manie
in deede are created, but few shal be saued.  (Matt 20:16)  4 And I
answered, and sayd:  Then o soul swallow vp the sense, and deuoure that
which is wise.  5 For thou art agred to obey, and willing to prophecie.
For there is no space geuen thee but only to liue.  6 O Lord if thou wilt
not permitte thy seruant, that we pray before thee, and thou geue vs
seede to the hart, and tillage to the vnderstanding, wherof may the
fruite be made, wherby euerie corrupt person may liue, that shal beare
the place of a man?  7 For thou art alone, and we are one workmanshippe
of thy handes, as thou hast spoken:  8 and as now the bodie made in the
matrice, and thou doest geue the members, thy creature is preserued in
fire & water:  and nine monethes thy workemanship doth suffer thy
creature that is created in it:  9 and it self that keepeth, and that
which is kept, both shal be preserued:  and the matrice being preserued
rendreth agayne at some time the thinges that are growen in it.  10 For
thou hast commanded of the members, that is the brestes to geue milke
vnto the fruite of the brestes, 11 that the thing which is made, may be
nourished til a certayne time, and afterward thou mayst dispose him to
thy mercie.  12 For thou hast, brought him vp in thy iustice, and hast
instructed him in thy law, and hast corrected him in thy vnderstanding:
13 and thou shalt mortifie him, as thy creature:  and shalt geue him
life, as thy worke.  14 If then thou wilt destroy him that is made with
so great labours:  it is easie by thy commandment to be ordayned, that
also which was made, might be preserued.  15 And now Lord I wil speake,
of euerie man thou rather knowest:  but concerning thy people, for which
I am sorowful:  16 and concerning thine inheritance, for which I mourne,
and for Israel for whom I am pensiue, and concerning Iacob, for whom I am
sorowful.  17 Therfore wil I begin to pray before thee for me, & for
them:  because I see our defaultes that inhabite the earth.  18 But I
haue heard of the celeritie of the iudge that shal be.  19 Therfore heare
my voyce, and vnderstand my word, and I wil speake before thee.  20 The
beginning of the wordes of Esdras before he was assumpted:  and I sayd:
Lord which inhabitest the world, whose eyes are eleuated vnto thinges on
high and in the ayre:  21 and whose throne is inestimable, and glorie
incomprehensible:  by whom standeth an host of Angels with trembling,
22 whose keping is turned in wynde and fire, thou whose word is true, and
sayings premanent:  23 whose commandment is strong, and disposition
terrible:  whose looke dryeth vp the depthes, and indignation maketh the
mountaynes to melt, and truth doth testifie.  24 Heare the prayer of thy
seruant, & with thine eares receiue the petition of thy creature.  25 For
whiles I liue, I wil speake:  and whiles I vnderstand, I wil answere:
26 Neither doe thou respect the sinnes of thy people, but them that serue
thee in truth.  27 Neither doe thou attend the impious endeuours of the
nations, but them that with sorowes haue kept thy testimonies.
28 Neither thinke thou of them that in thy sight haue conuerst falsly,
but remember them that according to thy wil haue knowen thy feare.
29 Neither be thou willing to destroy them that haue had the maners of
beastes:  but respect them that haue taught thy law gloriously.
30 Neither haue indignation towards them, which are iudged worse then
beastes:  but loue them that alwayes haue confidence in thy iustice, and
glorie.  31 Because we and our fatheres languish with such diseases:  but
thou for sinners shalt be called merciful.  32 For if thou shalt be
desirous to haue mercie on vs, then thou shalt be called merciful, to vs
hauing no workes of iustice.  33 For the iust which haue manie workes
layd vp, of their owne workes shal receiue reward.  34 For what is man,
that thou art angrie with him:  or the corruptible kinde, that thou art
so bitter touching it?  35 For in truth there is no man of them that be
borne, which hath not done impiously, and of them that confesse, which
haue not sinned.  (3 Kings 8:46 / 2 Par 6:36)  36 For in this shal thy
iustice be declared, and thy goodnes, o Lord, when thou shalt haue mercie
on them, that haue no substance of good workes.  37 And he answered me,
and sayd:  Thou hast spoken somethinges rightly:  and according to thy
wordes, so also shal it be done, 38 because I wil not in dede thinke vpon
the worke of them that haue sinned before death, before the iudgement,
before perdition:  39 but I wil reioyce vpon the creature of the iust,
and I wil remember their pilgrimage also, and saluation, and receiuing of
reward.  40 Therfore as I haue spoken, so also it is.  41 For as the
husbandman soweth vpon the ground manie seedes, and planteth manie
plantes, but not al which were sowen in time, are preserued, nor yet al
that were planted, shal take roote:  so they also that are sowen in the
world, shal not al be saued.  (Matt 13 & 20)  42 And I answered, and
sayd:  If I haue found grace, let me speake.  43 As the seede of the
husbandman, if it come not vp, or receiue not the rayne in time, if it be
corupted with much rayne, perisheth:  44 so likewise also man who made
with thy handes, and thou named his image:  because thou art likened to
him, for whom thou hast made al thinges, and hast likened him to the
seede of the husbandman.  45 Be not angrie vpon vs, but spare thy people,
and haue mercie on thy inheritance.  And thou hast mercie on thy
creature.  46 And he answered me, and sayd:  The thinges that are present
to them that are present, and that shal be, to them that shal be.  47 For
thou lackest much to be able to loue my creature aboue me:  and to thee
often times, euen to thyselfe I haue approched, but to the vniust neuer.
48 But in this also thou art meruelous before the Highest, 49 because
thou hast humbled thyself as becometh thee:  & hast not iudged thyself,
that among the iust thou maist be very much glorified.  50 For which
cause manie miseries, and miserable thinges shal be done to them that
inhabite the world in the later dayes:  because they haue walked in much 
pride.  51 But thou for thyselfe vnderstand, & for them that are like
vnto thee seeke glorie.  52 For to you paradise is open, the tree of life
is planted, time to come is prepared, abundance is prepared, a citie is
builded, rest is approued, goodnes is perfited, & perfit wisdome.  53 The
roote of euil is signed from you:  infirmitie, and mothe is hid from you:
& corruption is fled into hel in obliuion.  54 Sorowes are past, & the
treasure of immortalitie is shewed in the end.  55 Adde not therfore
inquiring of the multitude of them that perish.  56 For they also
receiuing libertie, haue despised the Highest, and contemned his lawe,
and forsaken his wayes.  57 Yea and moreouer they haue troden downe his
iust ones, 58 and haue sayd in their hart, that there is no God:  and
that, knowing that they dye.  (Ps 13 & 52)  59 For as the thinges
aforesayd shal receiue you:  so thirst and torment, which are prepared
shal take them:  for he would not man to be destroyed.  60 But they them
selues also which are created, haue defyled his name which made them:  &
haue bene vnkind to him that prepared life.  61 Wherfore my iudgement now
approcheth.  62 Which thinges I haue not shewed to al, but to thee, & to
few like vnto thee.  And I answered, and sayd:  63 Behold now Lord thou
hast shewed me a multitude of signes, which thou wilt beginne to doe in
the latter times:  but thou hast not shewed me at what time.



CHAP. IX.


Certaine signes shal goe before the day of iudgement.  14. More shal
perish then be saued.  25. Prayer with other good workes, are meanes to
saluation.

AND he answered me, and sayd:  Measuring measure thou the time in it
selfe:  and it shal be when thou seest, after a certaine part of the
signes which are spoken of before shal passe, 2 then shalt thou
vnderstand, that the same is the time wherin the Highest wil beginne to
visite the world that was made by him.  3 And when there shal be sene in
the world mouing of places, and truble of peoples, 4 then shalt thou
vnderstand, that of these spake the Highest, from the dayes that were
before thee, from the beginning.  5 For as al that is made in the world
hath a beginning, and also a consummation, and the consummation is
manifest:  6 so also the times of the Highest haue the beginning manifest
in wonders and powers, and the consummations in worke and in signes.
7 And it shal be, euery one that shal be saued, and that can escape by
his workes, and by fayth, in which you haue beleeued, 8 shal be leaft out
of the foresayd dangers, and shal see my saluation in my land, and in my
costes, because I haue sancitifed my selfe from the world.  9 And then
shal they be in miserie, that now haue abused my wayes:  and they that
haue reiected them in contempt, shal abide in torments.  10 For they that
knew not me, hauing obtained benefits when they liued:  11 and they that
loathed my law, when they yet had libertie, 12 and when as yet place of
penance was open to them vnderstoode not, but despised:  they must after
death in torment know it.  13 Thou therfore be not yet curious, how the
impious shal be tormented:  but inquire how the iust shal be saued, and
whose the world is, and for whom the world is, and when.  14 And I
answered, and sayd:  15 I haue spoken hertofore, and now I say, and
hereafter wil say:  that they are more which perish then that shal be
saued:  (Matt 10)  16 as a floud is multiplied aboue, more then a droppe.
17 And he ansvvered me, and sayd:  Like as the field so also the sedes:
and as the flovvers, such also the colours:  and as the workeman, such
also the worke:  and such as the husbandman, such is the husbandrie:
because it was the time of the world.  18 And now when I was preparing
for them, for these that now are before the world was made, wherin they
should dwel:  and no man gaynsayd me.  19 For then euery man, and now the
creator in this world prepared, and haruest not fayling, and law
vnsearchable their manners are corrupted.  20 And I considered the world,
and behold there was danger because of the cogitations that came in it.
21 And I saw, and spared it very much:  and I kept vnto my selfe a grape
kernel of a cluster, and a plant of a great trybe.  22 Let the multitude
therfore perish, which was borne without cause, and let my kernel be
kept, & my plant:  because I finished it with much labour.  23 And thou
if thou adde yet seuen other dayes, but thou shalt not fast in them,
24 thou shalt goe into a field of flowers, where no house is built:  &
thou shalt eate only of the flowers of the field, and flesh thou shalt
not tast, and wine thou shalt not drinke, but only flowers.  25 Pray to
the Highest without intermission, and I wil come, and wil speake with
thee.  26 And I went forth, as he sayd to me, into a field which is
called Ardath, and I sate there among the flowers.  And I did eate of the
herbes of the field, and the meate of them made me ful.  27 And it came
to passe after seuen dayes, and I sate downe vpon the grasse, and my hart
was trubled ayayne as before.  28 And my mouth was opened, and I beganne
to speake before the Highest, and sayd:  29 O Lord thou shewing thy selfe
to vs, wast shewed to our fathers in the desert, which is not troden, and
vnfruitful, when they came out of AEgypt:  and saying thou saydst:
(Ex 19 & 24 / Deut 4)  30 Thou Israel heare me, and sede of Iacob attend
to my wordes.  31 For behold, I sow my lawe in you, and it shal bring
forth fruite in you, and you shal be glorified in it for euer.  32 For
our fathers receiuing the law obserued it not, and kept not my
ordinances, and the fruite of the law did not appeare:  for it could not,
because it was thine.  33 For they that receiued it, perished, not
keeping that which had bene sowen in them.  (Ex 32)  34 And behold it is
the custome, that when the earth hath receiued sede, or the sea a shippe,
or some vessel meate or drinke:  when that shal be destroyed wherin it
was sowne, or into the which it was cast:  35 that which was sowne, or
cast in, or the thinges that were receiued, are destroyed withal, and the
thinges receiued now tarye not with vs:  but it is not so done to vs.
36 We in dede that receiued the law, sinning haue perished, and our hart
that receiued it:  37 For the law hath not perished, but hath remayned in
his labour.  (Ezech 48)  38 And when I spake these thinges in my hart, I
looked backe with myne eyes, and saw a woman on the right side, and
behold she mourned, and wept with a lowd voice, and was sorrowful in
mynde exceedingly, and her garments rent, and ashes vpon her heade.
39 And I left the cogitations, wherin I was thinking, and I turned to her
and sayd to her:  40 Why weepest thou?  and why art thou sorie in mynde.
And she sayd to me:  41 Suffer me my Lord, that I may lament myselfe, &
adde sorrow:  because I am of a very pensiue mynde, and am humbled
exceedingly.  42 And I sayd to her, What ayleth thee:  tel me.  And she
sayd to me:  43 I thy seruant haue beene barren, and haue not borne
childe, hauing a husband thirty yeares.  44 For I euery howre, and euerie
day, and these thirty yeares do beseche the Highest night and day.
45 And it came to passe, after thirtie yeares God heard me thy handmayd,
and saw my humilitie, and attended to my tribulation, and gaue me a
sonne:  and I was very ioyful vpon him, and my husband, and al my
citizens, and we did glorifie the Strong exceedingly.  46 And I nourished
him with much labour.  47 And it came to passe when he was growen, and
came to take a wife, I made a feast day.



CHAP. X.


The state of Ierusalem is prefigured by a woman mourning, 25. and
afterwardes reioycing.

AND it came to passe, when my sonne was entred into his inner chamber, he
fel downe, and dyed:  2 and we al ouerthrewe the lights, and al my
citizens rose vp to comfort me, and I was quiet vntil the other day at
night.  3 And it came to passe, when al were quiet to comfort me, that I
might be quiet:  and I arose in the night, and fled:  and came as thou
seest into this field.  4 And I meane nowe not to returne into the citie,
but to stay here:  and neither eate, nor drinke, but without intermission
to mourne, and to fast vntil I dye.  5 And I left the talke wherin I was,
and with anger answered her, & sayd:  6 Thou foole aboue al wemen, seest
thou not our mourning, & what thinges chance to vs?  7 Because Sion our
mother is sorroweful with al sorrowe, and humbled, and mourneth most
bitterly.  8 And now wheras we al mourne, and are sadde:  wheras we are
sorrowful, and art thou sorrowful for one sonne?  9 For aske the earth,
and it wil tel thee:  that it is she, that ought to lament the fal of so
manie thinges that spring vpon it.  10 And of her were al borne from the
beginning, and others shal come:  and behold, almost al walke into
perdition, and the multitude of them commeth to destruction.  11 And who
then ought to mourne more, but she that hath lost so great a multitude,
rather then thou which art sorie for one?  12 And if thou say vnto me,
that my mourning is not lyke the earthes:  because I haue lost the fruite
of my wombe, which I bare with sorrowes, and brought forth with paynes:
13 but the earth according to the maner of the earth, and the present
multitude in it hath departed as it came:  and I saye to thee, 14 as thou
hast brought forth with payne, so the earth also geueth her fruite for
man from the beginning to him that made her.  15 Now therfore kepe in
with thy sorrowe, and beare stoutly the chances that haue befallen thee.
16 For if thou iustifie the end of God, thou shalt in time both receiue
his counsel, and also in such thinges thou shalt be praysed.  17 Goe in
therfore into the citie to thy husband.  And she sayd to me:  18 I wil
not doe it, neither wil I enter into the citie, but here wil I dye.
19 And I added yet to speake to her, & sayd:  20 Doe not this word, but
consent to him that counseleth thee.  For how manie are the chances of
Sion?  Take comfort for the sorrowe of Ierusalem.  21 For thou seest that
our sanctification is made desert, and our altar is throwen downe, and
our temple is destroyed, 22 and our psalter is humbled, and hymne is
silent, and our exultation is dissolued, and the light of our
candelsticke is extinguished, and the arke of our testament is taken for
spoyle, & our holie thinges are contaminated, and the name that is
inuocated vpon vs, is almost prophaned:  and our children haue suffred
contumelie, and our Priestes are burnt, & our Leuites are gone into
captiuitie, & our virgins are defloured, and our wiues haue suffered
rape, and our iust men are violently taken, and our litle ones are lost,
and our yong men are in bondage, and our valiants are made impotent:
23 and that which is greatest of al, the seale of Sion, because she is
vnsealed of her glorie:  For she is also deliuered into the handes of
them that hate vs.  24 Thou therfore shake of thy great heauines, and lay
away from thee the multitude of sorrowes, that the Strong may be
propicious to thee agayne, and the Highest wil geue thee rest, rest from
thy labours.  25 And it came to passe, when I spake to her, her face did
shine suddenly, and her shape, and her visage was made glistering, so
that I was afrayde excedingly at her, & thought what this thing should
be.  26 And Behold, suddenly she put forth a great sound of a voyce ful
of feare, that the earth was moued at the womans sound.  And I saw:
27 and behold, the woman did no more appeare vnto me, but a citie was
built, & a place was shewed of great fundations:  and I was afrayd, &
crying with a loude voyce I sayd:  28 Where is Vriel the Angel, that from
the beginning came to me?  for he made me come in multitude in excesse of
this minde, and my end is made into corruption, & my prayer into reproch.
29 And when I was speaking these thinges, behold he came to me, and sawe
me.  30 And behold I was layd as dead, & my vnderstanding was alienated,
and he held my right hand, and strengthned me, & set me vpon my feete, &
sayd to me:  31 What ayleth thee?  and why is thy vnderstanding, and the
sense of thy hart trubled, & why art thou trubled?  And I sayd:
32 Because thou hast forsaken me, and I in dede haue done according to
thy wordes, & went out into the field:  & behold, I haue seene, & doe see
that which I cannot vtter.  And he sayd to me:  33 Stand like a man, & I
wil moue thee.  And I sayd:  34 Speake thou my Lord in me, forsake me
not, that I die not in vaine:  35 because I haue seene thinges that I
knew not, & I doe heare thinges that I know not.  36 Or is my sense
deceiued, & doth my soule dreame?  37 Now therfore I besech thee, that
thou shew vnto thy seruant concerning this trance.  And he answered me, &
sayd:  38 Heare me, and I wil teach thee, and wil tel thee of what
thinges thou art afrayd:  because the Highest hath reuealed vnto thee
manie mysteries.  39 He hath seene thy right way, that without
intermission thou was forrowful for thy people, and didst mourne
exceedingly for Sion.  40 This therfore is the vnderstanding of the
vision which appeared to thee a litle before.  41 The woman whom thou
sawest mourning, thou beganst to comfort her.  42 And now thou seest not
the forme of the woman, but there appeared to thee a citie to be built.
43 And because she tolde thee of the fal of her sonne, this is the
interpretation.  44 This woman which thou sawest, she is Sion, and wheras
she told thee of her, whom now also thou shalt see, as a citie builded.
45 And whereas she told thee, that she was barren thirtie yeares:  for
the which there were thirtie yeares, when there was not yet oblation
offered in it.  46 And it came to passe after thirtie yeares, Salomon
built the citie, and offered oblations:  then it was, when the barren
bare a childe.  47 And that which she sayd vnto thee, that she nourished
him with labour, this was the habitation in Ierusalem.  48 And wheras she
sayd to thee, that my sonne comming into the bryde chamber dyed, and that
a fal chanced vnto him, this was the ruine of Ierusalem that is made.
49 And behold, thou hast seene the similitude of her:  and because she
lamented her sonne, thou beganst to comfort her:  and of these thinges
that haue chanced, these were to be opened to thee.  50 And now the
Highest seeth that thou wast sorie from the hart:  and because with thy
whole hart thou sufferest for her, he hath shewed thee the clearnes of
her glorie, and the fayrenes of her beautie.  51 For therfore did he say
to thee, that thou shouldest tarie in a field where house is not built.
52 For I knew that the Highest beganne to shew thee these thinges:
53 therfore I sayd vnto thee, that thou shouldest goe into a field, where
is no fundation of building.  54 For the worke of mans building could not
be borne in the place, where the citie of the Highest began to be shewed.
55 Thou therfore feare not, neither let thy hart dread:  but goe in, and
see the beautie, and greatnes of the building, as much as the sight of
thyne eyes is capable to see:  56 & afterward thou shalt heare as much,
as the hearing of thyne eares is capable to heare.  57 For thou art
blessed aboue manie, and art called with the Highest as few.  58 And to
morrow night thou shalt tarie here:  59 and the Highest wil shew thee
those visions of the thinges on high, which the Highest wil doe to them
that inhabite vpon the earth in the later dayes.  60 And I slept that
night, and the other next, as he had sayd to me.



CHAP. XI.


An eagle appeareth to Esdras coming forth of the sea, with three heades,
and twelue winges:  sometimes one reigning in the world, sometimes an
other, but euerie one vanisheth away.  36. A lion also appeareth coming
forth of the wood, to suppresse the eagle.

AND I sawe a dreame, & behold an eagle came vp out of the sea:  which had
twelue winges of fethers, and three heades.  2 And I saw, and behold she
spred her winges into al the earth, and al the windes of heauen blew vpon
her, and were gathered together.  3 And I saw, and of her fethers sprang
contrarie feathers, and they became litle winges, and smale.  4 For her
heades were at rest, and the midle head was greater then the other
heades, but she rested with them.  5 And I saw, and behold the eagle flew
with her winges, and reigned ouer the earth, and ouer them that dwel in
it.  6 And I saw, that al thinges vnder heauen were subiect to her, and
no man gaynesayd her, no not one of the creature that is vpon the earth.
7 And I saw, and behold the eagle rose vp vpon her talons, and made a
voice with her winges, saying:  8 Watch not al together, sleepe euerie
one in his place, & watch according to time.  9 But let the heades be
preserued to the last.  10 And I saw, and behold the voice came not out
of her heades, but from the middes of her bodie.  11 And I numbered her
contrarie winges, and behold they were eight.  12 And I saw, and behold
on the right side rose one wing, and reighned ouer al the earth.  13 And
it came to passe, when it reigned, an end came to it, and the place
therof appeared not:  and the next rose vp, & reigned, that held much
time.  14 And it came to passe, when it reigned, & the end of it also
came, that it appeared not as the former.  15 And behold, a voice was
sent forth to it, saying:  16 Heare thou that hast held the earth of long
time.  Thus I tel thee before thou beginne not to appeare.  17 None after
thee shal hold thy time, no nor the halfe therof.  18 And the third
lifted vp it selfe, and held the principalitie as also the former:  and
that also appeared not.  19 And so it chanced to al the other by one & by
one to haue the principalitie, & agayne to appeare nowhere.  20 And I
saw, and behold in time the rest of the winges were sent vp on the right
side, that they also might hold the principalitie:  and of them there
were that held it, but yet forthwith they appeared not.  21 For some also
of them stoode vp, but they held not the principalitie.  22 And I saw
after these thinges, and behold the twelue winges, and two litle winges
appeared not:  23 and nothing remayned in the bodie of the eagle but two
heades resting, and six litle winges.  24 And I saw, and behold from the
six litle winges two were diuided, and they remayned vnder the head, that
is on the right side.  For foure taried in their place.  25 And I saw,
and behold the vnderwinges thought to set vp them selues, and to hold the
principalities.  26 And I saw, and behold one was set vp, but forthwith
it appeared not.  27 And they that were second did sooner vanish away
then the former.  28 And I saw, and behold the two that remayned, thought
with them selues that they also would reigne:  29 and when they were
thincking thereon, behold one of the resting heades, which was the midde
one awaked, for this was greater then the other two heades.  30 And I saw
that the two heades were complete with themselues.  31 And behold the
head with them that were with him turned, and did eate the two
vnderwinges that thought to reigne.  32 And this head terrified al the
earth, & ruled in it ouer them that inhabite the earth with much labour,
and he that held the dominion of the whole world aboue al the winges that
were.  33 And I saw after these thinges, and behold the midle head
sodenly appeared not, as did the winges.  34 And there remained two
heads, which reigned also themselues ouer the earth, and ouer them that
dwelt therein.  35 And I saw, and behold the head on the right side
deuoured that which was on the left.  36 And I heard a voice saying to
me, Looke against thee, and consider what thou seest.  37 And I saw, &
behold as a lion raysed out of the wood roaring:  and I saw that he sent
out a mans voyce to the eagle.  And he spake saying.  38 Heare thou, and
I wil speake to thee, and the Highest wil say to thee:  39 Is it not thou
that hast ouercome of the foure beastes, which I made to reigne in my
world, and that by them the end of their times might come?  40 And the
fourth coming ouercame al the beastes that were past, and by might held
the world with much feare, and al the world with most wicked laboure, and
he inhabitied the whole earth so long time with deceipte.  41 And thou
hast iudged the earth not with truth.  42 For thou hast afflicted the
meeke, and hast trubled them that were quiet, and hast loued lyers, &
hast destroyed their habitations that did fructifie, and hast ouerthrowen
their walles that did not hurt thee.  43 And thy contumelie is ascended
euen to the Highest, and thy pride to the Strong.  44 And the Highest
hath looked vpon the proud times:  and behold they are ended, and the
abominations therof are accomplished.  45 Therfore thou eagle appeare no
more, and thy horrible winges, & thy litle winges most wicked, and thy
heades malignant, and thy talons most wicked, and al thy bodie vayne,
46 that al the earth may be refreshed, and may returne deliuered from thy
violence, and may hope for his iudgement, and mercie that made it.



CHAP. XII.


The eagle vanisheth away, 5. Esdras prayeth, 10. and the former visions
are declared to him.

AND it came to passe, whiles the lyon spake these wordes to the eagle:  I
saw, 2 and behold the head that had ouercome, and those foure winges
appeared not which passed to him, and were set vp to reigne:  and their
reigne was smal, and ful of tumult.  3 And I saw, and behold they
appeared not, and al the bodie of the eagle was burnt, & the earth was
afrayd excedingly, and I by the tumult and traunce of minde, and for
great feare awaked, and sayd to my spirit:  4 Behold thou hast geuen me
this, in that, that thou searchest the wayes of the Highest.  5 Behold
yet I am wearie in minde, and in my spirit I am very feeble, and there is
not so much as a litle strength in me for the great feare, that I was
afrayd of this night.  6 Now therfore I wil pray the Highest, that he
strengthen me euen to the end.  7 And I sayd:  Lord Dominatour, if I haue
found grace before thine eyes, and if I am iustified before thee aboue
manie, and if in deede my prayer be ascended before thy face,
8 strengthen me, and shew vnto me thy seruant the interpretation, and
distinction of this horrible vision, that thou mayst comfort my soule
most fully.  9 For thou hast counted me worthie to shew vnto me the later
times.  And he sayd to me:  10 This is the interpretation of this vision.
11 The eagle which thou sawest coming vp from the sea, this is the
kingdom which was sene in a vision to Daniel thy brother.  (Dan 7:7)
12 But it was not interpreted to him, therfore I do now interprete it to
thee.  13 Behold the dayes come, and there shal rise a kingdon vpon the
earth, and the feare shal be more terrible then of al the kingdomes that
were before it.  14 And there shal twelue kinges reigne in it, one after
an other.  15 For the second shal beginne to reigne, and he shal continew
more time then the rest of the twelue.  16 This is the interpretation of
the twelue winges which thou sawest.  17 And the voice that spake which
thou heardst, not coming forth of her heads, but from the middes of her
bodie, 18 this is the interpretation, that after the time of that kingdom
shal rise no smal contentions, and it shal be in danger to fal:  and it
shal not fal then, but shal be constituted againe according to the
beginning therof.  19 And wheras thou sawest eight vnderwings cleauing to
the wings therof, 20 this is the interpretation, eight kinges shal arise
in it, whose times shal be light, and yeares swift, and two of them shal
perish.  21 But when the middest time approcheth, foure shal be kept til
a time, when the time therof shal beginne to approch to be ended, yet two
shal be kept to the end.  22 And wheras thou sawest three heads resting,
23 this is the interpretation:  in her last dayes the Highest wil rayse
vp three kingdoms, and wil cal backe manie thinges into them, and they
shal rule ouer the earth, 24 and them that dwel in it, with much labour 
aboue al them that vvere before them.  For this cause they are called the
heads of the eagle.  25 For these shal be they that shal recapitulate her
impieties, and that shal accomplish her last thinges.  26 And wheras thou
sawest a greater head not appearing, this is the interpretation therof:
that one of them shal dye vpon his bed, and yet with torments.  27 For
the two that shal remayne, the sword shal eate them.  28 For the sword of
one shal deuoure him that is with him:  but yet this also at the last
shal fal by the sword.  29 And wheras thou sawest two vnderwings passing
ouer the head that is on the right side, 30 this is the interpretation:
these are they whom the Highest hath kept to their end, this is a smal
kingdom, and ful of truble.  31 As thou sawest the lyon also, whom thou
sawest awaking out of the wood, and roaring, and speaking to the eagle,
and rebuking her, and her iniustices by al his wordes as thou hast heard:
32 this is the wynde which the Highest hath kept vnto the end for them,
and their impieties:  and he shal rebuke them, and shal cast in their
spoyles before them.  33 For he shal sette them in iudgment aliue:  and
it shal be, when he hath reproued them, then shal he chastise them.
34 For the rest of my people he shal deliuer with miserie, them that are
saued vpon my borders, and he shal make them ioyful til the end shal
come, the day of iudgment, wherof I haue spoken to thee from the
beginning.  35 This is the dreame which thou sawest, and these be the
interpretations.  36 Thou therfore only hast bene worthie to know this
secrete of the Highest.  37 Write therfore in a booke al these thinges
which thou hast sene, and put them in a hidden place:  38 and thou shalt
teach them the wise men of thy people, whose harts thou knowest able to
take, and to kepe these secretes.  39 But doe thou stay here yet other
seuen dayes, that there may be shewed thee whatsoeuer shal seme good to
the Highest to shew thee.  40 And he departed from me.  And it came to
passe, when al the people had heard that the seuen dayes were past, and I
had not returned into the citie, and al gathered them selues together
from the least vnto the greatest:  & came to me, & spake to me saying:
41 What haue we sinned to thee, or what haue we done vniustly against
thee, that leauing vs thou hast sitten in this place?  42 For thou alone
art remayning to vs of al peoples, as a cluster of grapes of the
vineyard, and as a candle in a darke place, and as an hauen and shippe
saued from the tempest.  43 Or are not the euiles that chance, sufficient
for vs?  44 If then thou shalt forsake vs, how much better had it bene to
vs, if we also had bene burnt with the burning of Sion?  45 For we are
not better then they that dyed there.  And they wept with a lowd voice.
And I answered them, and sayd:  46 Be of good chere Israel, and be not
sorowful thou house of Iacob.  47 For there is remebrance of you before
the Highest, and the Strong hath not forgotten you in tentation.  48 For
I haue not forsaken you, neither did I depart form you:  but I came into
this place, to pray for the desolation of Sion, and to seeke mercie for
the low estate of your sanctification.  49 And now goe euery one of you
into his house, and I wil come to you after these dayes.  50 And the
people departed, as I sayd to them, into the citie:  51 but I sate in the
fielde seuen dayes, as he commanded me:  and I did eate of the flowers of
the field only, of the herbes was my meate made in those dayes.



CHAP. XIII.


A vision of a winde (as it first semed, but) in dede, v. 3. of a man:
5. strong against the enimies:  21. with the interpretation.

AND it came to passe after seuen dayse, and I dreamed a dreame in the
night.  2 And behold there rose a winde from the sea, that trubled al the
waues therof.  3 And I saw, and behold that man grew strong with
thousandes of heauen:  and when he turned his countenance to consider, al
thinges trembled that were sene vnder him:  4 and whersoeuer voyce
proceded out of his mouth, al that heard his voices begane to burne, as
the earth is quiet when it feeleth the fire.  5 And I saw after these,
and behold a multitude of men was gathered together, of whom there was no
number, from the foure windes of heauen, to fight against the man that
was come vp out of the sea.  6 And I saw, and behold he had grauen to
himself a great mountaine, & he flew vpon it.  7 And I sought to see the
countrie, or the place whence the mountaine was grauen, & I could not.
8 And after these thinges I saw, and behold al that were gathered to him,
to ouerthrowe him, feared exceedingly, yet they were bold to fieght.
9 And behold as he sawe the violence of the multitude that came, he
lifted not vp his hand, nor held sword, nor anie warlyke instrument but
only as I saw, 10 that he sent forth out of his mouth as it were a blaste
of fire, and from his lippes a spirit of flame, & from his tongue he
sentforth sparkles & tempests, and al thinges were mingled together with
this blast of fire, & spirit of flame, & multitude of tempests.  11 And
it fel with violence vpon the multitude, that was prepared to fight, and
burned them al, that suddenly there was nothing sene of an innumerable
multitude, but only dust, & the sauour of smoke:  and I saw, and was
afrayd.  12 And after these thinges I saw the man himself descending from
the mountaine, and calling to him an other peaceable multitude, 13 and
there came to him the countenance of manie men some reioycing, and some
sorrowing:  and some bond, some bringing of them them that were offered.
And I was sicke for much feare, and awaked, and sayd.  14 Thou from the
beginning hast shewed thy seruant these meruelous thinges, and hast
counted me worthie that thou wouldest receiue my petition.  15 And now
shew me yet the interpretation of this dreame.  16 For as I thinke in my
iudgement, woe to them that were leaft in those dayes:  & much more woe
to them that were not leaft.  17 For they that were not leaft, were
sorrowful.  18 I vnderstand now what thinges are layde vp in the later
dayes, and they shal happen to them, yea and to them that are leaft.
19 For therefore they came into great dangers, and manie necessities, as
these dreames do shew.  20 But yet it is easier, aduenturing to come into
it, then to passe, as a cloud from the world, and vow to see the thinges
that happen in the later time.  And he answered me, and sayd:  21 Both
the interpretation of the vision I wil tel thee:  and also concerning the
thinges that thou hast spoken I wil open to thee.  22 Wheras thou
speakest of them that were leaft, this is the interpretation.  23 He that
taketh away danger at that time, he hath garded himself.  They that haue
fallen into danger, these are they that haue workes, and fayth in the
Strongest.  24 Know therefore that they are more blessed which are leaft,
then they that are dead.  25 These are the interpretations of the vision,
wheras thou sawest a man coming from the hart of the sea, 26 the same is
he whom the Highest preserueth much time, which by himself shal deliuer
his creature:  and he shal dispose them that are leaft.  27 And wheras
thou sawest proceede out of his mouth, as it were winde, and fire, and
tempest:  28 and wheras he held no sworde, nor warlike instrument:  for
his violence destroyed the multitude that came to ouerthrow him:  this is
the interpretation.  29 Behold the dayes come, when the Highest shal
begin to deliuer them, that are vpon the earth:  30 and he shal come in
excesse of minde vpon them that inhabit the earth.  31 And one shal
thinke to ouerthrow an other:  one citie an other citie, one place an
other place, and nation against nation, and kingdom against kingdom.
(Matt 24 / Luke 21)  32 And it shal be, when these thinges shal come to
passe, and the signes shal happen, which I shewed thee before:  and then
shal my sonne be reueled, whom thou sawest, as a man coming vp.  33 And
it shal be when al nations shal heare his voice:  and euery one in his
countrie shal leaue their warre, that they haue toward each other:
34 and an innumerable multitude shal be gathered in one, as willing to
come to ouerthrow him.  35 But he shal stand vpon the top of mount Sion.
36 And Sion shal come, and it shal be shewed to al prepared and builded,
as thou sawest the mountaine to be grauen without handes.  37 And the
same my sonne shal reproue the thinges that the gentils haue inuented,
these their impieties which came nere to the tempest, because of their
euil cogitaitons, and torments wherewith they shal begin to be tormented.
38 Which were likened to the flame, and he shal destroy them without
labour by the law that was likened to the fyre.  39 And wheras thou
sawest him gathering vnto him an other peaceable multitude.  40 These are
the ten tribes, which were made captiue out of their land in the dayes of
Osee the King, whom Salmanasar the King of the Assyrians led captiue:
and he transported them beyond the riuer, and they were transported into
an other land.  (4 Kings 17)  41 But they gaue themselues this counsel,
to forsake the multitude of nations, and to goe forth into a farther
countrie, where mankind neuer inhabited.  42 Or there to obserue their
ordinances, which they had not kept in their countrie.  43 And they
entred in by the narrow entrances of the riuer Euphrates.  44 For the
Highest then wrought them signes, and stayed the vaines of the riuer til
they passed.  (Ex 14 / Jos 3)  45 For by that countie was a great way to
goe, of one yeare and a half:  for the countrie is called Arsareth.
46 Then did they inhabite there til in the later time:  and now againe
when they beginne to come, 47 againe the Highest shal stay the vaines of
the riuer, that they may passe:  for these thou sawest a multitiude with
peace.  48 But they also that were leaft of the people, these are they
that be within my border.  49 In shal come to passe therefore, when he
shal begine to destroy the multitude of these nations, that are gathered,
he shal protect them that haue ouercome the people:  50 and then shal he
shew them very manie wonders.  51 And I sayd:  Lord dominatour, shew me
this, why I saw a man comming vp from the hart of the sea, and he sayd to
me:  52 As thou canst not either search these thinges, or know what
thinges are in the depth of the sea:  so can not any man vpon the earth
see my sonne, or them that are with him, but in the time of a day.
53 This is the interpretation of the dreame which thou sawest, and for
the which thou only art here illuminated.  54 For thou hast leaft thyne
owne law, and hast bene occupied about my law, and hast sought it.
55 For thou hast disposed thy lyfe in wisdom, and thyne vnderstanding
thou hast called mother:  56 and for this I haue shewed thee riches with
the Highest.  For it shal be after other three dayes, I wil speake other
thinges to thee, and I wil expound to thee weightie and meruelous
thinges.  57 And I went forth, and passed into the fielde, much
glorifying & praising the Highest for the meruelous thinges that he did
by time.  58 And because he gouerneth it, and the thinges that are
brought in times, & I sate there three dayes.



CHAP. XIIII.


God appeareth in a bush, 6. reuealing some thinges to be published, and
some thinges to be hid.  10. As the world waxeth old, al thinges become
worse.  27. The people of Israel are vngratful.  32. Al shal be iudged in
the Resurrection according to their deedes.

AND it came to passe the third day, and I sate vnder an oke.  2 And
behold a voice came forth against me out of a bush, and sayd:  Esdras,
Esdras:  and I sayd:  Loe here I am Lord.  And I arose vpon my feete.
And he sayd to me:  3 Reueling I was reueled vpon the bush, and spake to
Moyses, when the people serued in AEgypt, (Ex 3) 4 and I sent him, and
brought my people out of AEgypt, and brought him vpon mount Sina, & held
him with me manie dayes.  5 And I told him manie meruelous thinges, &
shewed him the secrets of times, and the end:  and I commanded him,
saying:  6 These wordes thou shalt publish abroade, and these thou shalt
hyde.  7 And now to thee I say:  8 The signes which I haue shewed, and
the dreames which thou hast sene, and the interpretations which thou hast
sene, lay them vp in thy hart.  9 For thou shalt be receiued of al, thou
shalt be conuerted the residue with thy counsel, and with the like to
thee, til the times be finished:  10 Because the world hath lost his
youth, and the times draw nere to waxe old.  11 For the world is diuided
by twelue partes, & the tenth part, & half of the tenth part are passed:
12 and there remaineth hereafter the half of the tenth part.  13 Now
therefore dispose thy house, and correct thy people, & comfort the humble
of them, & forsake now corruption, 14 and put from thee mortal
cogitations, and cast from thee humane burdens, and doe from thee now
infirme nature, & lay at one side cogitations most trublesome to thee, &
make speedie transmigration from these times, 15 for the euiles which
thou hast sene to haue chanced now, worse then these wil they doe againe:
(Matt 24 / 1 John 2)  16 for looke how much the world shal become weake
by age, so much shal euiles be multiplied vpon the inhabitants.  17 For
truth hath remoued it self farther of, and lying hath approched, for now
the vision which thou sawest, hasteneth to come.  18 And I answered, and
sayd before thee o Lord:  19 For behold I wil goe, as thou hast commanded
me, & wil rebuke the people that now is.  But them that shal yet be born,
who shal admonish?  20 The world therfore is set in darknes, and they
that dwel in it without light.  21 Because thy law is burnt, therefore no
man knowth the workes that haue bene done by thee, or that shal begin.
22 For if I haue found grace with thee, send the Holie Ghost to me, & I
wil write al that hath bene done in the world from the beginning, the
thinges that were written in thy law, that men may finde the pathe:  and
they that wil liue in the later times, may liue.  23 And he answered me,
and sayd:  Goe gather together the people, and thou shalt say to them,
that they seeke thee not for fourtie dayes.  24 And doe thou prepare thee
manie tables of boxe, & take with thee Sarea, Dabria, Salemia, Echanus,
and Asiel, these fiue which are readie to write sweeftly.  25 And come
hither, & I wil light in thy hart a candle of vnderstanding, which shal
not be put out til the things be finished, which thou shalt begine to
write.  26 And then some thinges thou shalt open to the perfect, some
thou shalt deliuer secretly to the wyse.  For to morrow this houre thou
shalt begine to write.  27 And I went as he commanded me, & gathered
together al the people, and sayd:  28 Heare Israel these wordes:  29 Our
fathers were pilgrimes from the beginning in AEgypt, and were deliuered
from thence.  (Gen 47)  30 And they receiued the law of life, which they
kept not, which you also after them haue transgressed:  (Deut 4 / Acts 7)
31 and the land was geuen you by lotte, and the land of Sion, and your
fathers, and you haue done iniquitie, and haue not kept the wayes which
the Highest commanded you.  32 And whereas he is a iust iudge, he hath
taken from you in time that which he had geuen.  33 And now you are here,
and your brethren are among you.  34 If then you wil rule ouer your
sense, & instruct your hart, you shal be preserued aliue, and after death
shal obtaine mercie.  35 For the iudgement shal come after death, when we
shal returne to lyfe againe:  and then the names of the iust shal
appeare, and the dedes of the impious shal be shewed.  36 Let no man
therfore come to me now, nor aske for me vntil fourtie dayes.  37 And I
tooke the fiue men, as he commandede me, and we went forth into the
field, and taried there.  38 And I was come to the morrow, & behold as
voice called me, saying:  Esdras open thy mouth, and drinke that which I
wil geue thee to drinke.  (Ezech 3)  39 And I opened my mouth, & behold a
ful cuppe was brought me, this was ful as it were with water:  but the
colour therof like as fire.  40 And I tooke it, and dranke; and when I
had drunken of it, my hart was tormented with vnderstanding, and wisdome
grewe into my brest.  For my spirit was kept by memorie.  41 And my mouth
was opened, and was shut no more.  42 The Highest gaue vnderstanding vnto
the fiue men, and they wrote excesses of the night which were spoken,
which they knewe not.  43 And at night they did eate breade, but I spake
by day, & by night held not my peace.  44 And there were written in the
fourtie dayes two hundred foure bookes.  45 And it came to passe when
they had ended the fourtie daies, the Highest spake, saying:  46 The
former thinges which thou hast written, set abrode, and let the worthie
and vnworthiereade:  but the last seuentie bookes thou shalt keepe, that
thou mayest deliuer them to the wyse of thy people.  47 For in these is
the vaine of vnderstanding, and the fountaine of wisdome, and the streame
of knowledge.  and I did soe.



CHAP. XV.


Esdras is bid to denounce, that assuredly manie euiles wil come to the
world.  9. God wil protect his people, the wicked shal be punished, and
lament their final miseries, God reuenging for the good.

BEHOLD speake into the eares of my people the wordes of prophecie, which
I shal put into thy mouth, sayth our Lord:  2 and see that they be
written in paper, because they be faithful and true.  3 Be not afrayd of
the cogitations against thee, neither let the incredulities truble thee
of them that speake.  4 Because euerie incredulous person shal dye in his
incredulitie.  5 Behold I bring in, sayth our Lord, vpon the whole earth
euils, sword, and famine, and death, and destruction.  6 Because
iniquitie hath fully polluted ouer al the earth, and their hurtful workes
are accomplished.  7 Therefore sayth our Lord:  8 I wil not now kepe
silence of their impieties which they doe irreligiously, neither wil I
beare with those thinges, which they practise vniustly.  Behold the
innocent & iust bloud crieth to me, & the soules of the iust crie
continually.  9 Reuenging I wil reuenge them, sayth our Lord, and I wil
take al innocent bloud out of them vnto me.  (Apoc 6:10 & 19:2)
10 Behold my people is led to slaughter as a flocke, I wil no more suffer
it to dwel in the land of AEgypt.  11 But I wil bring them forth in a
mightie hand and valiant arme, and wil strike with plague as before, and
wil corrupt al the land thereof.  12 AEgypt shal mourne, and fundations
thereof beaten with plague, and with the chastisement which God wil bring
vpon it.  13 The husbandmen that til the ground shal mourne, because
their seedes shal perish by blasting, and haile, and by a terible starre.
14 Woe to the world and them that dwel therein.  15 Because the sword is
at hand and the destruction of them, and nation shal rise vp against
nation to fight, & sword in their handes.  (Matt 24 / Luke 21)  16 For
there shal be instabilitie to men, & growing one against an other they
shal not care for their king, & the princes of the way of their doinges,
in their might.  17 For a man shal desire to go into the citie & can not.
18 Because of their prides the cities shal be trubled, the houses raised,
the men shal feare.  19 Man shal not pitie his neighbour, to make their
houses nothing worth in the sword, to spoyle their goodes for famine of
bread, & much tribulation.  20 Behold, I cal together sayth God, al the
kinges of the earth to feare me, that are from the Orient, & from the
South, from the East, & from Libanus, to be turned vpon themselues, and
to render the thinges that they haue geuen them.  21 As they doe vntil
this day to myne elect, so wil I doe, and render in their bosome.  Thus
sayth our Lord God:  22 My right hand shal not spare sinners, neither
shal the sword cease vpon them that shede innocent bloud vpon the earth.
23 Fire came forth from his wrath, and hath deuoured the fundations of
the earth, and sinners as it were straw set on fire.  24 Woe to them that
sinne, and obserue not my comandmentes, sayth our Lord.  25 I wil not
spare them:  depart o children from the powre.  Defile not my
sanctification:  26 because the Lord knoweth al that sinne against him;
therefore hath he deliuered them into death and into slaughter.  27 For
now are euils come vpon the world, and you shal tarrie in them.  For God
wil not deliuer you, because you haue sinned against him.  28 Behold an
horrible vision, and the face of it from the east.  29 And the nations of
dragons of Arabians shal come forth in manie chariots, & as a winde the
number of them is caried vpon the earth, so that now al doe feare and
tremble, that shal heare them.  30 the Carmonians madde for anger, and
they shal goe forth as wild boares out of the wood, & they shal come with
great power, and shal stand in fight with them, & they shal waste the
portion of the land of the Assirians.  31 And after these thinges the
dragons shal preuaile mindful of their natiuitie, and conspiring shal
turne themselues in great force to pursue them.  32 These shal be trubled
and hold their peace at their force, and shal turne their fete into
flight.  33 And from the territorie of the Assirians the besiegers shal
beseige them, and shal consume one of them, and there shal be feare and
trembling in their armie, and contention against their kinges.  34 Behold
cloudes from the east, and from the north vnto the south, and their face
very horrible, ful of wrath and storme.  35 And they shal beate one
against an other, and they shal beate downe manie starres, and their
starre vpon the earth, and bloud shal be from the sword vnto the bellie.
36 And mans dung vnto the camels litter, and there shal be much feare,
and trembling vpon the earth.  37 And they shal shake that shal see that
wrath, and tremble shal take them:  and after these thinges there shal
manie showers be moued:  38 from the south, and the north:  and an other
portion from the weast.  39 And the windes from the east shal reuaile
vpon it, and shal shut it vp, and the cloudes which he raised in wrath,
and the starre to make terrour to the east winde, and the west shal be
destroyed.  40 And there shal be exalted great and mightie cloudes ful of
wrath, and a starre to terrifie al the earth, and the inhabitantes
therof, and they shal powre in vpon euerie high, and eminent place a
terrible starre, 41 fire, and haile, and flying swordes, and manie
waters, so that al fildes also shal be filled, and al riuers with the
fulnes of manie waters.  42 And they shal throw downe cities, and walles,
and mountaines, and hilles, and the trees of the woodes, and the grasse
of the medowes, and their corne.  43 And they shal passe constant vnto
Babylon, and shal raise her.  (Apoc 18)  44 They shal come together
against her, and shal compasse her, and shal power out the starre, and al
wrath vpon her, and the dust and smoke shal goe vp euen into heauen, and
round about shal lament her.  45 And they that shal remaine vnder her,
shal serue them that terified her.  46 And thou Asia agreeing into the
hope of Babylon, and the glorie of her person, 47 woe be to thee thou
wretch, because thou art like to her, and hast adorned thy daughters in
fornication, to please & glorie in thy louers, which haue desired alwayes
to fornicate with thee.  48 Thou hast imitated the odious in al her
workes, and in her inuentions:  therefore sayth God:  49 I wil send in
euils vpon thee, widowhood, pouertie, and famine, and sword, and
pestilence, to destroy thy houses by violation, and death, and glorie of
thy vertue.  50 As a flower shal be withered, when the heate shal rise
that is sent forth vpon thee, 51 thou shalt be weakned as a litle poore
soule plaged and chastised of wemen, that the mightie and the louers may
not receiue thee.  52 Wil I be zealous against thee sayth our Lord,
53 vnles thou hadst slayne myne elect at al times, exalting the slaughter
of the handes, and saying vpon their death, when thou wast drunken.
54 Adorne the beautie of thy countenance.  55 The reward of thy
fornication is in thy bosome, therefore thou shalt receiue recompence.
56 As thou shalt doe to my elect, sayth our Lord, so shal God do to thee,
and shal deliuer thee vnto euil.  57 And thy children shal dye for
famine:  and thou shalt fal by the sword, and thy cities shal be
destroyed, & al thyne shal fal in the filde by the sword.  58 And they
that are in the mountaines, shal perish, with famine, and shal eate their
owne flesh, & drinke bloud, for the famine of bread and thirst of waters.
59 Vnhappie by the seas shalt thou come, and againe thou shalt receuie
euils.  60 And in the passage they shal beate against the idle citie, and
shal destroy some portion of thy land, and shal deface part of thy
glorie, againe returning to Babylon ourethrowen.  61 And being throwen
downe thou shalt be to them for stubble, and they shal be to thee fire:
62 and deuoure thee, and thy cities, thy land, and thy mountaynes, al thy
woodes and fruitful trees they wil burne with fire.  63 Thy children they
shal lead captiue, & shal haue thy goodes for a praye, and the glorie of
thy face they shal destroy.



CHAP. XVI.


Al are admonished, that extreme calamities shal fal vpon this world,
36. the penitent returning to iustice shal escape, 55. & as al thinges
were made by Gods omnipotent powre at his wil, so al thinges shal serue
to the reward of the blessed, and punishment of the wicked.

VVOE to thee Babylon & Asia, woe to thee AEgypt, and Syria.  2 Gird
yourselues with sackclothes and shirtes of heare, & mourne for your
children, & be sorie:  because your destruction is at hand.  3 The sword
is sent in vpon you, and who is he that can turne it away?  4 Fire is
sent in vpon you, and who is he that can quench it?  5 Euiles are sent in
vpon you, and who is he that can repel them?  6 Shal anie man repel the
lion being hungrie in the woode, or quench the fire in stubble, forthwith
when it beginneth to burne?  7 Shal anie man repel the arrow shot of a
strong archer?  8 Our strong Lord sendeth in euiles, and who is he that
can repel them?  9 Fire came forth from his wrath, and who is he that can
quench it?  10 He wil lighten, who shal not feare, he wil thunder, and
who shal not be afrayed?  11 Our Lord wil threaten, and who shal not
vtterly be destroyed before his face?  12 The earth hath trembled, and
the fundations thereof, the sea tosseth vp waues from the depth, and the
floudes of it shal be destroyed, and the fishes thereof at the face of
our Lord, and at the glorie of his powre:  13 because his right hand is
strong which bendeth the bow, his arrowes be sharpe that are shot of him,
they shal not misse, when they shal begine to be shot into the endes of
the earth.  14 Behold euiles are sent, and they shal not returne til they
come vpon the earth.  15 The fire is kindled and it shal not be quenched,
til it consume the fundations of the earth.  16 For as the arrow shot of
a strong archer returneth not, so shal not the euils returne backe, that
shal be sent vpon the earth.  17 Woe is me, woe is me:  who shal deliuer
me in those dayes?  18 The beginning of sorrowes and much mourning, the
beginning of famine and much destruction.  The beginning of warres and
the potestates shal feare, the beginning of euiles and al shal tremble.
19 In these what shal I doe, when the euils shal come?  20 Behold famine,
and plague, and tribulation, and distresse are sent al as scourges for
amendment, 21 and in al these they wil not conuert themselues from their
iniquities, neither wil they be alwayes mindful of the scourges.
22 Behold, there shal be good cheape victuals vpon the earth, so that
they may thinke that peace is directly coming toward them, and then shal
euiles spring vpon the earth, sword, famine, and great confusion.  23 For
by famine manie that inhabit the earth shal dye, and the sword shal
destroy the rest that remained aliue of the famine, 24 and the dead shal
be cast forth as dung, and there shal be none to comfort them.  For the
earth shal be left desert, and the cities therof shal be throwen downe.
25 There shal not be left a man to til the ground and to sow it.  26 The
trees shal yeeld fruites, and who shal gather them?  27 The grape shal
become ripe, & who shal tread it?  For there shal be great desolation to
places.  28 For a man shal desire to see a man, or to heare his voyce.
29 For there shal be leaft ten of a citie, and two of the field that haue
hid themselues in thicke woodes, and cliffes of rockes.  30 As there are
left in the oliuet, and on euerie tree, three of foure oliues.  31 Or as
in a vinyeard when it is gathered there are grapes left by them, that
diligently search the vineyard:  32 so shal there be left in those dayes
three or foure, by them that search their houses in the sword.  33 And
the earth shal be left desolate, and the fildes thereof shal waxe old, &
the wayes thereof, and al the pathes thereof shal bringforth thornes,
because no man shal passe by it.  34 Virgins shal mourne hauing no
bridegromes, wemen shal mourne hauing no husbandes, their daughters shal
mourne hauing no helpe:  35 their bridegromes shal be consumed in battel,
and their husbandes be destroyed in famine.  36 But heare these thinges,
and know them ye seruantes of our Lord.  37 Behold the word of our Lord,
receiue it:  beleue not the goddes of whom our Lord speaketh.  38 Behold
the euiles approch, and slacke not.  39 As a woman with childe when shee
bringeth forth her child in the ninth moneth, the houre of her
deliuerance approching, two or three howres before, paines come about her
wombe, and the infants coming out of her wombe, they wil not tarrie one
moment.  40 So the euiles shal not slacke to come forth vpon the earth,
and the world shal lament, and sorowes shal hold it round about.
41 Heare the word, my people:  prepare yourselues vnto the fight, & in
the euiles so be ye as strangers of the earth.  42 He that selleth as if
he should flee, and he that byeth as he that should lose it.  43 He that
playeth the marchant, as he that should take no fruite:  and he that
buildeth as he that should not inhabite.  44 He that soweth, as he that
shal not reape:  so he also that pruneth a vinyeard, as if he should not
haue the vintage.  45 They that marie so as if they should not get
children, & they that marie not, so as if were widowes.  46 Wherfore they
that labour, labour without cause:  47 for foreners shal reape their
fruites, & shal violently take their goodes, and ouerthrow their houses,
and lead theire children captiue, because in captiuitie, and famine they
beget their children.  48 And they that play the marchantes by robrie,
the longer they adorne their cities and houses, and their possessions and
persons:  49 so much the more wil I be zealous toward them, vpon their
sinnes, sayth our Lord.  50 As a whore enuieth an honest & very good
woman:  51 so shal iustice hate impietie when she adorneth herselfe, and
accuseth her to her face, when he shal come that may defend him that
searcheth out al vpon the earth.  52 Therefore be not made like to her,
nor to her workes.  53 For yet a little whyle & iniquitie shal be taken
away from the earth, & iustice shal reigne ouer you.  54 Let not the
sinner say he hath not sinned:  because he shal burne coales of fire vpon
his head, that sayth I haue not sinned before our Lord God and his
glorie.  55 Behold our Lord shal know al the workes of men, and their
inuentions, & their cogitations, and their hartes.  (Eccli 23 / Luke 16)
56 For he sayd:  Let the earth be made, and it was made:  let the heauen
be made, & it was made.  (Gen 1)  57 And by his worde the starrs were
made, & he noweth the number of the starres.  (Ps 146:4)  58 Who
searcheth the depth and the treasures therof:  who hath measured the sea,
& capacitie therof.  (Job 38)  59 Who hath shut vp the sea in the midest
of waters, & hath hanged the earth vpon the waters with his word.  60 Who
hath spred heauen as it were a vault, ouer the waters he hath founded it.
61 Who hath put fountaines of waters in the desert, and lakes vpon the
toppes of mountaines, to send forth riuers from the high rocke to watter
the earth.  62 Who made man & put his hart in the midds of the bodie, and
gaue him spirit, life and vnderstanding.  63 And the inspiration of God
omnipotent that made al thinges, and searcheth al hid thinges, in the
secretes of the earth.  64 He knoweth your inuention, and what you thinke
in your hartes sinning, and willing to hide your sinnes.  65 Wherfore our
Lord in searching hath searched al your workes, and he wil put you al to
open shame, 66 and you shal be confounded when your sinnes shal come
forth before men, and the iniquities shal be they, that shal stand
accusers in that day.  67 What wil you doe?  or how shal you hide your
sinnes before God and his Angels?  68 Behold God is the Iudge, feare him.
Cease from your sinnes, and now forget your iniquities to doe them anie
more, & God wil bring you out, and deliuer you from al tribulation.
69 For behold the heate of a great multitude is kindled ouer you, and
they shal take certaine of you by violence, & shal make the slaine to be
meate for idols.  70 And they that shal consent vnto them, shal be to
them in derision, and in reproch, and in conculcation.  71 For there shal
be place against places, and against the next cities great insurrection
vpon them that feare our Lord.  72 They shal be as it were madde sparing
no bodie, to spoyle and waste yet them that feare our Lord.  73 because
they shal waste and spoyle the goodes, and shal cast them out of their
houses.  74 Then shal appeare the probation of mine elect, as gold that
is proued by the fire.  75 Heare be beloued, sayth our Lord:  Behold the
dayes of tribulation are come:  and out of them I wil deliuer you.
76 Doe not feare, nor stagger, because God is your guide.  77 And he that
kepeth my commandmentes, and precepts, sayth our Lord God:  Let not your
sinnes ouerway you, nor your inquities be aduanced ouer you.  78 Woe to
them that are entangled with their sinnes, and are couered with their
iniquities, as a filde is entangled with the wood, & the path therof
couered with thornes, by which no man passeth, & it is closed out, & cast
to be deuoured of the fire.

FINIS.



Note:  This translation comes from the Latin text, usually printed in an
appendix to editions of the Vulgate, but these editions miss seventy
verses between 7:35 and 7:36.  The missing fragment was discovered in a
Latin manuscript by Robert Lubbock Bensly in 1874.  Below is a
translation of this fragment from a revised Authorized Version.
Although often numbered 7:36-7:105, they are here number as A:1-A:70 to
avoid any repetition in chapter:verse designations.

A:1. And the pit of torment shall appear, and over against it shall be
the place of rest:  and the furnace of hell shall be shewed, and over
against it the paradise of delight.
A:2. And then shall the Most High say to the nations that are raised from
the dead, See ye and understand whom ye have denied, or whom ye have not
served, or whose commandments ye have despised.
A:3. Look on this side and on that:  here is delight and rest, and there
fire and torments.  Thus shall he speak unto them in the day of
judgement:
A:4. This is a day that hath neither sun, nor moon, nor stars,
A:5. neither cloud, nor thunder, nor lightning, neither wind, nor water,
nor air, neither darkness, nor evening, nor morning,
A:6. neither summer, nor spring, nor heat, nor winter, neither frost, nor
cold, nor hail, nor rain, nor dew,
A:7. neither noon, nor night, nor dawn, neither shining, nor brightness,
nor light, save only the splendour of the glory of the Most High, whereby
all shall see the things that are set before them:
A:8. for it shall endure as it were a week of years.
A:9. This is my judgement and the ordinance thereof; but to thee only
have I shewed these things.
A:10. And I answered, I said even then, O Lord, and I say now:  Blessed
are they that be now alive and keep the statutes ordained of thee.
A:11. But as touching them for whom my prayer was made, what shall I say?
for who is there of them that be alive that hath not sinned, and who of
the sons of men that hath not transgressed thy covenant?
A:12. And now I see, that the world to come shall bring delight to few,
but torments unto many.
A:13. For an evil heart hath grown up in us, which hath led us astray
from these statutes, and hath brought us into corruption and into the
ways of death, hath shewed us the paths of perdition and removed us far
from life; and that, not a few only, but well nigh all that have been
created.
A:14. And he answered me, and said, Hearken unto me, and I will instruct
thee; and I will admonish thee yet again:
A:15. for this cause the Most High hath not made one world, but two.
A:16. For whereas thou hast said that the just are not many, but few, and
the ungodly abound, hear the answer thereunto.
A:17. If thou have choice stones exceeding few, wilt thou set for thee
over against them according to their number things of lead and clay?
A:18. And I say, Lord, how shall this be?
A:19. And he said unto me, Not only this, but ask the earth, and she
shall tell thee; intreat her, and she shall declare unto thee.
A:20. For thou shalt say unto her, Thou bringest forth gold and silver
and brass, and iron also and lead and clay:
A:21. but silver is more abundant than gold, and brass than silver, and
iron than brass, lead than iron, and clay than lead.
A:22. Judge thou therefore which things are precious and to be desired,
whatso is abundant or what is rare.
A:23. And I said, O Lord that bearest rule, that which is plentiful is of
less worth, for that which is more rare is more precious.
A:24. And he answered me, and said, Weigh within thyself the things that
thou hast thought, for he that hath what is hard to get rejoiceth over
him that hath what is plentiful.
A:25. So also is the judgement which I have promised:  for I will rejoice
over the few that shall be saved, inasmuch as these are they that have
made my glory now to prevail, and of whom my name is now named.
A:26. And I will not grieve over the multitude of them that perish; for
these are they that are now like unto vapour, and are become as flame and
smoke; they are set on fire and burn hotly, and are quenched.
A:27. And I answered and said, O thou earth, wherefore hast thou brought
forth, if the mind is made out of dust, like as all other created things?
A:28. For it were better that the dust itself had been unborn, so that
the mind might not have been made therefrom.
A:29. But now the mind groweth with us, and by reason of this we are
tormented, because we perish and know it.
A:30. Let the race of men lament and the beasts of the field be glad; let
all that are born lament, but let the fourfooted beasts and the cattle
rejoice.
A:31. For it is far better with them than with us; for they look not for
judgement, neither do they know of torments or of salvation promised unto
them after death.
A:32. For what doth it profit us, that we shall be preserved alive, but
yet be afflicted with torment?
A:33. For all that are born are defiled with iniquities, and are full of
sins and laden with offences:
A:34. and if after death we were not to come into judgement, peradventure
it had been better for us.
A:35. And he answered me, and said, When the Most High made the world,
and Adam and all them that came of him, he first prepared the judgement
and the things that pertain unto the judgement.
A:36. And now understand from thine own words, for thou hast said that
the mind groweth with us.
A:37. They therefore that dwell upon the earth shall be tormented for
this reason, that having understanding they have wrought iniquity, and
receiving commandments have not kept them, and having obtained a law they
dealt unfaithfully with that which they received.
A:38. What then will they have to say in the judgement, or how will they
answer in the last times?
A:39. For how great a time hath the Most High been longsuffering with
them that inhabit the world, and not for their sakes, but because of the
times which he hath foreordained!
A:40. And I answered and said, If I have found grace in thy sight, O
Lord, shew this also unto thy servant, whether after death, even now when
every one of us giveth up his soul, we shall be kept in rest until those
times come, in which thou shalt renew the creation, of whether we shall
be tormented forthwith.
A:41. And he answered me, and said, I will shew thee this also; but join
not thyself with them that are scorners, nor number thyself with them
that are tormented.
A:42. For thou hast a treasure of good works laid up with the Most High,
but it shall not be shewed thee until the last times.
A:43. For concerning death the teaching is:  When the determinate
sentence hath gone forth from the Most High that a man should die, as the
spirit leaveth the body to return again to him who gave it, it adoreth
the glory of the Most High first of all.
A:44. And if it be one of those that have been scorners and have not kept
the way of the Most High, and that have despised his law, and that hate
them that fear God,
A:45. these spirits shall not enter into habitations, but shall wander
and be in torments forthwith, ever grieving and sad, in seven ways.
A:46. The first way, because they have despised the law of the Most High.
A:47. The second way, because they cannot now make a good returning that
they may live.
A:48. The third way, they shall see the reward laid up for them that have
believed the covenants of the Most High.
A:49. The fourth way, they shall consider the torment laid up for
themselves in the last days.
A:50. The fifth way, they shall see the dwelling places of the others
guarded by angels, with great quietness.
A:51. The sixth way, they shall see how forthwith some of them shall pass
into torment.
A:52. The seventh way, which is more grievous than all the aforesaid
ways, because they shall pine away in confusion and be consumed with
shame, and shall be withered up by fears, seeing the glory of the Most
High before whom they have sinned whilst living, and before whom they
shall be judged in the last times.
A:53. Now this is the order of those who have kept the ways of the Most
High, when they shall be separated from the corruptible vessel.
A:54. In the time that they dwelt therin they painfully served the Most
High, and were in jeopardy every hour, that they might keep the law of
the lawgiver perfectly.
A:55. Wherefore this is the teaching concerning them:
A:56. First of all they shall see with great joy the glory of him who
taketh them up, for they shall have rest in seven orders.
A:57. The first order, because they have striven with great labour to
overcome the evil thought which was fashioned together with them, that it
might not lead them astray from life into death.
A:58. The second order, because they see the perplexity in which the
souls of the ungodly wander, and the punishment that awaiteth them.
A:59. The third order, they see the witness which he that fashioned them
beareth concerning them, that while they lived they kept the law which
was given them in trust.
A:60. The fourth order, they understand the rest which, being gathered in
their chambers, they now enjoy with great quietness, guarded by angels,
and the glory that awaiteth them in the last days.
A:61. The fifth order, they rejoice, seeing how they have now escaped
from that which is corruptible, and how they shall inherit that which is
to come, while they see moreover the straitness and the painfulness from
which they have been delivered, and the large room which they shall
receive with joy and immortality.
A:62. The sixth order, when it is shewed unto them how their face shall
shine as the sun, and how they shall be made like unto the light of the
stars, being henceforth incorruptible.
A:63. The seventh order, which is greater than all the aforesaid orders,
because they shall rejoice with confidence, and because they shall be
bold without confusion, and shall be glad without fear, for they hasten
to behold the face of him whom in their lifetime they served, and from
whom they shall receive their reward in glory.
A:64. This is the order of the souls of the just, as from henceforth is
announced unto them, and aforesaid are the ways of torture which they
that would not give heed shall suffer from henceforth.
A:65. And I answered and said, Shall time therefore be given unto the
souls after they are separated from the bodies, that they may see that
whereof thou hast spoken unto me?
A:66. And he said, Their freedom shall be for seven days, that for seven
days they may see the things whereof thou hast been told, and afterwards
they shall be gathered together in their habitations.
A:67. And I answered and said, If I have found favour in thy sight, shew
further unto me thy servant whether in the day of judgement the just will
be able to intercede for the ungodly or to intreat the Most High for
them,
A:68. whether fathers for children, or children for parents, or brethren
for brethren, or kinsfolk for their next of kin, or friends for them that
are most dear.
A:69. And he answered me, and said, Since thou hast found favour in my
sight, I will shew thee this also:  The day of judgement is a day of
decision, and displayeth unto all the seal of truth; even as now a father
sendeth not his son, or a son his father, or a master his slave, or a
friend him that is most dear, that in his stead he may be sick, or sleep,
or eat, or be healed:
A:70. so never shall any one pray for another in that day, neither shall
one lay a burden on another, for then shall all bear every one his own
righteousness or unrighteousness.





BOOK FOR COMPARISON




THE PROPHECIE OF ABDIAS.



ABDIAS borne in Sichem, of the tribe Ephraim, prophecied the same time
with Amos; so briefly that his prophecie is not parted into chapters:
1. against the Idumeans; foreshewing their destruction; 10. for their
perpetual emnitie against the Iewes, and confederacie with the Chaldees.
17. The captiuitie and relaxation of the Iewes.  19. And redemption of
the whole world by Christ.


THE vision of Abdias.  Thus sayth our Lord God to Edom:  We haue heard a
bruit from our Lord, and he hath sent a legate to the Gentils:  Rise ye,
and let vs arise against him into battel.  2 Behold I haue geuen thee a
litle one in the Gentils:  thou art contemptible excedingly.  3 The pride
of thy hart hath extolled thee, dwelling in the clefts of rockes,
exalting thy throne:  which sayst in thy hart:  Who shal plucke me downe
to the earth.  4 If thou shalt be exalted as an eagle, and if thou shalt
set thy nest among the starres:  thence wil I plucke thee downe, sayth
our Lord.  5 If theues had gone in to thee, if robbers by night, how
hadst thou held thy peace.  would not they haue stolen thinges sufficent
for themselues.  if the grape gathereres had entered in to thee, would
they not haue left thee at the least a cluster.  6 How haue they searched
Esau, haue they sought out his hidden thinges.  7 Euen to the border haue
they cast thee out:  al the men of thy league haue mocked thee:  the men
of thy peace haue peuailed against thee:  they that eate with thee, shal
lay embushments vnder thee:  there is no wisedom in him.  8 Why, shal not
I in that day, sayth our Lord, destroy the wise out of Idumea, and
prudence from the mount of Esau, 9 And thy valients of the South shal
feare, that man may perish from the mount of Esau.  10 For the slaughter,
and for the iniquitie against thy brother Iacob, confusion shal couer
thee, and thou shalt perish for euer.  11 In the day when thou stoodest
against him, when strangers tooke his armie, and foreners entered his
gates, and vpon Ierusalem cast lotte:  thou also wast as one of them.
12 And thou shalt not dispise in the day of thy brother, in the day of
his peregrination:  and thou shalt not reioyce ouer the children of Iuda,
in the day of their perdition:  & thou shalt not magnifie thy mouth in
the day of distresse.  13 Neither shalt thou enter the gate of my people
in the day of their ruine:  neither shalt thou also dispise in his euils
in the day of his distruction:  and thou shalt not be sent out against
his armie in the day of his destruction.  14 Neither shalt thou stand in
the outgoings to kil them that flee:  and thou shalt not shut vp his
remnant in the day of tribulation.  15 Because the day of our Lord is at
hand vpon al nations:  as thou hast done, so shal it be done to thee:
thy retribution he wil returne vpon thine owne head.  16 For as you haue
drunke vpon my holie mount, shal al Gentils drinke continually:  & they
shal drinke, and swallow vp, and they shal be as though they were not.
17 And in mount Sion shal be saluation, and it shal be holie:  and the
house of Iacob shal possesse those that had possessed them.  18 And the
house of Iacob shal be a fyre, and the house of Ioseph a flame, and the
house of Esau stubble:  and they shal be kindled in them, and shal
deuoure them:  and there shal be no remaynes of the house of Esau,
because our Lord hath spoken.  19 And they that are toward the South,
shal inherite the mount of Esau, and they in the champaine countries,
Philisthiims:  and they shal possesse the region of Ephraim, and the
region of Samaria:  and Beniamin shal possesse Galaad.  20 And the
transmigration of this host of the children of Israel, al places of the
Chananeits euen to Sarepta:  and the transmigration of Ierusalem, that is
in Bosphorus, shal possesse the cities of the South.  21 And sauiours
shal ascend into mount Sion to iudge the mount of Esau:  and the kingdom
shal be to our Lord.





End of Project Gutenberg Holy Bible, Douay-Rheims Version, O.T. Part 2

