Image transform over network

I used following code for JPG image transfer
sender :
Socket client=new Socket("localhost",4444);
           FileInputStream fis = new FileInputStream("C:/abc.jpg");
          byte[] buffer = new byte[fis.available()];
          fis.read(buffer);
          ObjectOutputStream oos = new ObjectOutputStream(client.getOutputStream()); //get the socket output stream
          oos.writeObject(buffer);
reciever:
ObjectInputStream ois = new ObjectInputStream(Client.getInputStream());
                byte[] buffer = (byte[])ois.readObject();
                FileOutputStream fos = new FileOutputStream("C:/pqr.jpg");
                fos.write(buffer);I m sucessful transfering the file but the the image does not open.
Erroor is no preview available.
What is the prob?

In the sender:
You need to read the entire file. The available() method tells you how much can be read in one opportunity, but there are more bytes to be read from that file.
There is no need to serialize it, those bytes can be written over the outputstream directly. This is a lot better in terms of performance.
And flush your outputstream to be sure that there are no more bytes waiting to get out
OutputStream out = client.getOutputStream();
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = fis.read(buffer)) > 0) {
    out.write(buffer, 0, bytesRead);
out.flush(); // Very important
fis.close(); // Also very importantAt the receiver:
The same advice
InputStream in = client.getInputStream();
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = in.read(buffer)) > 0) {
    fos.write(buffer, 0, bytesRead);
fos.flush(); // Very important
fos.close(); // Also very important
// here you might close your socket

Similar Messages

  • Help! Saving an image to stream and recreating it on client over network

    Hi,
    I have an application that uses JDK 1.1.8. I am trying to capture the UI screens of this application over network to a client (another Java app running on a PC). The client uses JDK 1.3.0. As AWT image is not serializable, I got code that converts UI screens to int[] and persist to client socket as objectoutputstream.writeObject and read the data on client side using ObjectInputStream.readObject() api. Then I am converting the int[] to an Image. Then saving the image as JPEG file using JPEG encoder codec of JDK 1.3.0.
    I found the image in black and white even though the UI screens are in color. I have the code below. I am sure JPEG encoder part is not doing that. I am missing something when recreating an image. Could be colormodel or the way I create an image on the client side. I am testing this code on a Win XP box with both server and client running on the same machine. In real scenario, the UI runs on an embedded system with pSOS with pretty limited flash space. I am giving below my code.
    I appreciate any help or pointers.
    Thanks
    Puri
         public static String getImageDataHeader(Image img, String sImageName)
             final String HEADER = "{0} {1}x{2} {3}";
             String params[] = {sImageName,
                                String.valueOf(img.getWidth(null)),
                                String.valueOf(img.getHeight(null)),
                                System.getProperty("os.name")
             return MessageFormat.format(HEADER, params);
         public static int[] convertImageToIntArray(Image img)
             if (img == null)
                 return null;
            int imgResult[] = null;
            try
                int nImgWidth = img.getWidth(null);
                int nImgHeight = img.getHeight(null);
                if (nImgWidth < 0 || nImgHeight < 0)
                    Trace.traceError("Image is not ready");
                    return null;
                Trace.traceInfo("Image size: " + nImgWidth + "x" + nImgHeight);
                imgResult = new int[nImgWidth*nImgHeight];
                PixelGrabber grabber = new PixelGrabber(img, 0, 0, nImgWidth, nImgHeight, imgResult, 0, nImgWidth);
                grabber.grabPixels();
                ColorModel model = grabber.getColorModel();
                if (null != model)
                    Trace.traceInfo("Color model is " + model);
                    int nRMask, nGMask, nBMask, nAMask;
                    nRMask = model.getRed(0xFFFFFFFF);
                    nGMask = model.getRed(0xFFFFFFFF);
                    nBMask = model.getRed(0xFFFFFFFF);
                    nAMask = model.getRed(0xFFFFFFFF);
                    Trace.traceInfo("The Red mask: " + Integer.toHexString(nRMask) + ", Green mask: " +
                                    Integer.toHexString(nGMask) + ", Blue mask: " +
                                    Integer.toHexString(nBMask) + ", Alpha mask: " +
                                    Integer.toHexString(nAMask));
                if ((grabber.getStatus() & ImageObserver.ABORT) != 0)
                    Trace.traceError("Unable to grab pixels from the image");
                    imgResult = null;
            catch(Throwable error)
                error.printStackTrace();
            return imgResult;
         public static Image convertIntArrayToImage(Component comp, int imgData[], int nWidth, int nHeight)
             if (imgData == null || imgData.length <= 0 || nWidth <= 0 || nHeight <= 0)
                 return null;
            //ColorModel cm = new DirectColorModel(32, 0xFF0000, 0xFF00, 0xFF, 0xFF000000);
            ColorModel cm = ColorModel.getRGBdefault();
            MemoryImageSource imgSource = new MemoryImageSource(nWidth, nHeight, cm, imgData, 0, nWidth);
            //MemoryImageSource imgSource = new MemoryImageSource(nWidth, nHeight, imgData, 0, nWidth);
            Image imgDummy = Toolkit.getDefaultToolkit().createImage(imgSource);
            Image imgResult = comp.createImage(nWidth, nHeight);
            Graphics gc = imgResult.getGraphics();
            if (null != gc)
                gc.drawImage(imgDummy, 0, 0, nWidth, nHeight, null);       
                gc.dispose();
                gc = null;       
             return imgResult;
         public static boolean saveImageToStream(OutputStream out, Image img, String sImageName)
             boolean bResult = true;
             try
                 ObjectOutputStream objOut = new ObjectOutputStream(out);
                int imageData[] = convertImageToIntArray(img);
                if (null != imageData)
                    // Now that our image is ready, write it to server
                    String sHeader = getImageDataHeader(img, sImageName);
                    objOut.writeObject(sHeader);
                    objOut.writeObject(imageData);
                    imageData = null;
                 else
                     bResult = false;
                objOut.flush();                
             catch(IOException error)
                 error.printStackTrace();
                 bResult = false;
             return bResult;
         public static Image readImageFromStream(InputStream in, Component comp, StringBuffer sbImageName)
             Image imgResult = null;
             try
                 ObjectInputStream objIn = new ObjectInputStream(in);
                 Object objData;
                 objData = objIn.readObject();
                 String sImageName, sSource;
                 int nWidth, nHeight;
                 if (objData instanceof String)
                     String sData = (String) objData;
                     int nIndex = sData.indexOf(' ');
                     sImageName = sData.substring(0, nIndex);
                     sData = sData.substring(nIndex+1);
                     nIndex = sData.indexOf('x');
                     nWidth = Math.atoi(sData.substring(0, nIndex));
                     sData = sData.substring(nIndex+1);
                     nIndex = sData.indexOf(' ');
                     nHeight = Math.atoi(sData.substring(0, nIndex));
                     sSource = sData.substring(nIndex+1);
                     Trace.traceInfo("Name: " + sImageName + ", Width: " + nWidth + ", Height: " + nHeight + ", Source: " + sSource);
                     objData = objIn.readObject();
                     if (objData instanceof int[])
                         int imgData[] = (int[]) objData;
                         imgResult = convertIntArrayToImage(comp, imgData, nWidth, nHeight);
                         sbImageName.setLength(0);
                         sbImageName.append(sImageName);
            catch(Exception error)
                error.printStackTrace();
             return imgResult;
         }   

    While testing more, I found that the client side is generating color UI screens if I use JDK 1.3 JVM for running the server (i.e the side that generates the img) without changing single line of code. But if I use JDK 1.1.8 JVM for the server, the client side is generating black and white versions (aka gray toned) of UI screens. So I added code to save int array that I got from PixelGrabber to a text file with 8 ints for each line in hex format. Generated these files on server side with JVM 1.1.8 and JVM 1.3. What I found is that the 1.1.8 pixel grabber is setting R,G,B components to same value where as 1.3 version is setting them to different values thus resulting in colored UI screens. I don't know why.

  • Urgent help:send image over network using rmi

    hi all,
    i have few question about send image using rmi.
    1) should i use ByteArrayOutputStream to convert image into byte array before i send over network or just use fileinputstream to convert image into byte array like what i have done as below?
    public class RemoteServerImpl  extends UnicastRemoteObject implements RemoteServer
      public RemoteServerImpl() throws RemoteException
      public byte[] getimage() throws RemoteException
        try{
           // capture the whole screen
           BufferedImage screencapture = new Robot().createScreenCapture(new     Rectangle(Toolkit.getDefaultToolkit().getScreenSize()) );
           // Save as JPEG
           File file = new File("screencapture.jpg");
           ImageIO.write(screencapture, "jpg", file);
            byte[] fileByteContent = null;
           fileByteContent = getImageStream("screencapture.jpg");
           return fileByteContent;
        catch(IOException ex)
      public byte[] getImageStream(String fname) // local method
        String fileName = fname;
        FileInputStream fileInputStream = null;
        byte[] fileByteContent = null;
          try
            int count = 0;
            fileInputStream = new FileInputStream(fileName);  // Obtains input bytes from a file.
            fileByteContent = new byte[fileInputStream.available()]; // Assign size to byte array.
            while (fileInputStream.available()>0)   // Correcting file content bytes, and put them into the byte array.
               fileByteContent[count]=(byte)fileInputStream.read();
               count++;
           catch (IOException fnfe)
         return fileByteContent;           
    }2)if what i done is wrong,can somebody give me guide?else if correct ,then how can i rebuild the image from the byte array and put it in a JLable?i now must use FileOuputStream but how?can anyone answer me or simple code?
    thanks in advance..

    Hi! well a had the same problem sending an image trough RMI.. To solve this i just read the image file into a byte Array and send the array to the client, and then the client creates an imegeIcon from the byte Array containing the image.. Below is the example function ton read the file to a byte Array (on the server) and the function to convert it to a an imageIcon (on the client).
    //      Returns the contents of the file in a byte array.
        public static byte[] getBytesFromFile(File file) throws IOException {
            InputStream is = new FileInputStream(file);
            // Get the size of the file
            long length = file.length();
            // You cannot create an array using a long type.
            // It needs to be an int type.
            // Before converting to an int type, check
            // to ensure that file is not larger than Integer.MAX_VALUE.
            if (length > Integer.MAX_VALUE) {
                // File is too large
            // Create the byte array to hold the data
            byte[] bytes = new byte[(int)length];
            // Read in the bytes
            int offset = 0;
            int numRead = 0;
            while (offset < bytes.length
                   && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
                offset += numRead;
            // Ensure all the bytes have been read in
            if (offset < bytes.length) {
                throw new IOException("Could not completely read file "+file.getName());
            // Close the input stream and return bytes
            is.close();
            return bytes;
        }to use this function simply use something like this
    public byte[] getImage(){
    byte[] imageData;
              File file = new File("pic.jpg");
              // Change pic.jpg for the name of your file (duh)
              try{
                   imageData = getBytesFromFile(file);
                   // Send to client via RMI
                            return imageData;
              }catch(IOException ioe){
                           // Handle exception
                           return null; // or whatever you want..
    }and then on the client you could call a function like this
    public ImageIcon getImageFromServer(){
         try{
              // get the image from the RMI server
              byte[] imgBytes = myServerObject.getImage();
              // Create an imageIcon from the Array of bytes
              ImageIcon ii = new ImageIcon(imgBytes);
              return ii;
         }catch(Exception e){
              // Handle some error..
              // If yo get here probably something went wrong with the server
              // like File Not Found or something like that..
              e.printStackTrace();
              return null;
    }Hope it helps you..

  • Adding artwork over network

    I get a strange thing: my library (of pretty much 160 kbps AAC) is on a network drive; currently ~10mbps link. If I import to the library on that drive: all good.
    However if I then add artwork, then typically the smaller songs (2 minutes or less, although this is just a guide) become unplayable and I have to burn them again. If I import them locally, add artwork and then drag them over to the network drive later, everything's fine.
    Does anyone else get this? If not are you accessing your library over a 100mbps link or something similarly faster than mine?
    Cheers,
    Trystan

    I sort of answered my own quetion - artwork for shared music that is actually playing is displayed by clicking on the triangle in the bar above artwork box, but arwork is not shown for music that is simply selected. This is likely due to increased bandwidth of need to transfer images over network; may well disappear as higher-bandwidth home networks become more common. I hope this helps someone.
    -Bob

  • Any wat to display artwork over network?

    I thought that iTunes was not able to do this but saw a post from someone who said that this is automatic. For my setup (standard router network with all computers allowing sharing of all contents of library) when a shared song is selected the art box shows 'Album Artwork Not Modifyable' and the view options 'List with Cover' and 'Cover Browser' are greyed out. If I look at 'get info' on an individual song "lyrics" and "Artwork" are greyed out as selections.
    Anyway, is there any way to display artwork for shared music? Some obscure setting I have missed? Any help appreciated.
    -Bob

    I sort of answered my own quetion - artwork for shared music that is actually playing is displayed by clicking on the triangle in the bar above artwork box, but arwork is not shown for music that is simply selected. This is likely due to increased bandwidth of need to transfer images over network; may well disappear as higher-bandwidth home networks become more common. I hope this helps someone.
    -Bob

  • Running a java program over network

    Hi,
    How a java program on a machine can be run without having JRE on the same machine, rather interpreting bytecode over network having JRE on another machine?

    Rahul.Kumar wrote:
    well, so my java program is running on x. Initialy X had JRE and on invoking java program from command prompt, it had looked for JRE at path, set in environmental settings. Now I moved JRE to another machine Y and connected these two machines (X and Y). You have two machines X and Y.
    "Connected" or not has nothing to do with this discussion.
    In X path is set to the JRE on Y. The path on X has absolutely nothing to do with anything on Y.
    Now execute java program on X, theoretically it should work or what is wrong with this?This makes no sense. Presuming you meant Y in the above then the following must be true.
    1. You must have a JRE on Y.
    2. You must have a java application on Y (or one accessible via the file system on Y.)
    3. You must be on Y and start the JRE passing the java application that is on Y to it.
    Notice in the above there is no mention of X. There can be no mention of X.

  • Using "Image/Transform/Perspective" on a layer?

    Hi,
    I'm new at this.  I have a shot of a big room with empty art frames on the walls.  I have rectangular layers that are shots of paintings that I want to drop into the frames, but of course the paintings layers have to be skewed to show the perspective angle (trapezoid) that matches the room.  Problem is, it seems that I can only use Image/transform/perspective on the painting files before they become layers.  This means guessing the perspective, then moving them into the background, which is trial&error at best.  It's very hard to guess the appropriate perspective when the file isn't a layer. It seems that once the painting files become layers, the "perspective" option is no longer available.  I can use "skew," or "free transform," but not "perspective."    "Skew" doesn't work, because while it will allow changing the rectangle into a paralellogram, it won't allow me to change the rectangle into a trapezoid. "Free Transform" doesn't work for the same reason.  So, How do you apply the "perspective" function to a layer?
    If I knew how to change the rectangle by grabbing one of a selection's corner anchor boxes and fixing it place, that would help because I could create my own trapezoid, but I don't know how to do that.  Does anyone?
    Thanks!

    I've no idea why all the transform options aren't available; they are here.
    Anyway, try this:
    Drag or copy/paste the painting in. It will come in as a new layer.
    Convert that layer to a smart object (Layer > Smart Object > Convert..). Reduce the smart object opacity to 50%.
    Choose Transform > Distort and move the corners individually into place.
    When you're happy, set opacity back to 100% and rasterize the smart object.
    The beauty of the smart object in this case is that you can transform repeatedly without any additional quality loss; it will be rendered only once when you rasterize.

  • Accessing shared files over network

    I am having some problems with a couple of database files that I access with a Java program over network. Different computers running this program all need access to these files, and my question is if anyone know of a good way to make sure that only one user have access to these files at the time. There is no server software running were the files are stored, they are simply reached through file sharing. Currently I am creating a lock file indicating that someone is editing the files, however if I am unlucky 2 users create that lockfile at the same time and then both get access to the file corrupting it. Anyone experienced this and know of a nice solution to avoid it?

    I am having some problems with a couple of database
    files that I access with a Java program over network.
    Different computers running this program all need
    access to these files, and my question is if anyone
    know of a good way to make sure that only one user
    have access to these files at the time.Use a database server instead.

  • System Image Recovery from Network Drive - not found

    Hello all!
    I have been routinely backuping my OS and important files using Windows 7 backup on a NAS. It just so happened that I needed to re-image my OS drive and I got into the Windows 8 recovery boot sequence.
    I booted from a windows 8 USB stick and Under the Advanced tools I selected the System Image Recovery and tried to look for the system image on the network path. Although the prompt said it was connecting to the network , the network share was
    not found. the command prompt couldn't ping google.com and netsh wlan <SSID> command did not work in hopes of connecting to my local wifi.
    Is there a way to connect to the wifi network where my NAS is connected to in order to re-image from the system image found on the NAS? Luckily , there was an older image on a separate local HDD that I could re-image from but I would prefer if
    I could connect to the NAS during the recovery process.
    Any help is greatly appreciated.

    Hi,
    First, I have to say that in WinRE, http and wifi is not supported, that's why you cannot ping google and connect to wifi.
    To access NAS, we have to make sure that your network connection is wired, and try to manually location the NAS via
    \\IP address\...
    I will check if the Windows 7 image backup can be restored in WinRE of Windows 8, and update your soon.
    Edit:
    I have tried this, and it appeared that to restore Windows 7 image backup on this computer from Windows 8 winRE is not supported.
    see following error:
    Kate Li
    TechNet Community Support

  • How to change the image in SAP network graphics

    In my development with SAP network graphics, I found it difficult to change the image displayed in SAP network graphics. and i define the image path in IMG, it doesn't work. Is there any one who can tell me how to diplay a image in SAP network graphics. In my program the class cl_gui_netchart is used. 
    Thanks a lot!

    hi,
    JFrame frame;
    frame.setVisible(true);
    frame.setIconImage(new ImageIcon("icons/img007.gif").getImage());
    frame.setSize(800,600);
    i think the thing u r searching is :
    frame.setIconImage(new ImageIcon("icons/img007.gif").getImage());
    ~~~radha

  • Help! Why do my images look overly sharp and appear to download?

    I recently updated CC and now my images look overly sharp when I'm batching or working at a smaller size. When zoomed in at 50% they look fine. Is there any way to fix this? It's very difficult to work with everything looking so warped at a smaller scale. Also, when I open a file after batching and running an action it appears to "download" line by line instead of just opening. What is going on?

    When I am batching multiple images and running actions, I don't want to view them at 100% they are huge files. 24 megapixels, on average 60.5M and 3925x5945 at 300 dpi. That's REALLY zoomed in. I was not having this issue with CC until I updated it and now everything looks warped at a smaller scale. I want to know why it changed and how to change it back.

  • Share Aperture photos over network

    Hallo every body,
    iam searching for a solution, how to share photo over network for a long time, in our company we have 40 macs(imac, mac bookpro) and 3 xserve, vtrak and 30pc. and we have round about 30000 pic they are saved in iphoto library on one of the xserve.
    My Boss wants from me to find a solution to share these photos over network. the mac users must use iphoto to access these photos.
    which program shall i install on the server so that the client users can access the photos from there macs through iphoto.
    at the beginning i used the share library option in iphoto, until iphoto 9.1.1. By iphoto 9.1.1 on the client when i click on the shared library my searching field disappears and i cant search in the shared photos.
    I thought Aperture is the solution, so i shared the aperture library over the network (with afp protocoll) but in order to access the network aperture library, first i need to install aperture on the client and then i open iphoto and from iphoto option i can choose the option access aperture library.
    how can i solve it without to install aperture on the client, is there any iphoto plugin so that i can access aperture library without installing aperture
    or is there somebody uses another solution???
    please help
    best regards
    Tony

    Neither iPhoto nor Aperture is the solution for this.
    The idea of using iphoto on the client machines is wrong, it's just not designed for that use. Iphoto is designed for a family with a point and shoot camera, or even a phone. Aperture is a pro level photomanager. Installing Aperture on all the mchines means you will have to purchase the app for all the machine, you need a site licence.
    Also, it won't work anyway. You can't share an Aperture Library like an iPhoto one an only one user can access the Library at a time. So, one of the users acesses the Library and all the others are locked out.
    Neither are what you need: you need a media server application. A pro level media server. Tell your boss he's fooling himself if he thinks anything else will work reliably.
    Regards
    TD

  • Install Solaris10 over network.

    I have one sinfire v245 box which is in remote location (DR site). I want to install Solari10-u5 on it.
    I can't travel to remote site due to some restriction.
    Presently Solaris10-U1 is installed in the box.
    I have telnet/SSH access to Solaris-OS, and i have SSH access to it's "Advanced Lights Out Manager".
    There is no one in remote location who can insert Solaris10-u5 media.
    In this situation, is there anyway that i can freshly install Solaris10-u5 on it ?

    Ok. I learned the way how to install Solaris over network.
    I have created a install server on another solaris box, the client and this box are in the same network.
    I am trying to install the client, i am getting this error on the client continuously . Any idea how to solve this ?
    ar_entry_query: Could not find the ace for source address <IP_Address>
    ar_entry_query: Could not find the ace for source address <IP_Address>

  • Manual image transformation: Losing top of the image

    With LR3 I often use the manual image transformations and observe an undesirable effect, which I cannot explain to myself: When changing the Vertical Perspective to a negative value, the image will be transformed to cope with the perspective as intended, but its top will be shifted out of sight as well. For example, when correcting the image of a tall building, the top of its tower shifts out of sight. An example:
    After applying vertical correction -33 it looks like this:
    The entire top of the tower is gone, on the bottom though we see the "out of image" area, and we cannot shift the image downward to see the top of the tower rather than the "gray" on the bottom. I found no way to avoid this, until I discovered that I can change the  scaling factor (while losing the resulting image resolution :-() and than this missing part of the image will be visible again.
    Once we scale to 84% the above image, we can see the top of the tower again. Of course, we can crop out the gray areas manually:
    However, the pixel size of the image is really reduced proportionally to the scale factor, here 0.84.
    Why is that so? I am almost convinced, its a bug.
    Thomas

    I would not be too worried about losing resolution etc.
    If you do a lens correction like the one in the example of the "leaning tower", it is "major surgery" mo matter if you do it in LR or PS.
    The top of the image gets enlarged while the bottom stays the same size.
    You can think of this kind of lens correction as an image enlargement through a gradual filter that runs vertically.
    As enlargements always do, it degrades image quality.
    If you are concerned about retaining max image quality, in my opinion it's best to stay away from correction of lens distortion.
    But I realize, sometimes we don't have that choice.
    WW

  • Expdp over network fails.

    I have a test1 and test2 db's on two different servers. I want to run expdp from test2 db and get the export of a table from test1. I have created a db link and used network_link in expdp command. Granted read,write on directory to user with which i am connecting to db.
    Using expdp over a network_link fails with this error. For the same user I have tried it locally on test2 db and it works fine.
    Is there any other step to be done ?
    ORA-39002: invalid operation
    ORA-39070: Unable to open the log file.
    ORA-39087: directory name DUMPS is invalid

    expdp un/pwd*@test1db* job_name=EXP_test1 directory=dumps network_link=test1.dummy.COM dumpfile=dp.dmp log
    file=dp.LOG tables=a.tableThis is the problem. When running export using NETWORK_LINK to test1, you need to connect to test2 not test1.
    The idea is your connect to test2 first , test2 then connect to test1 using database link and bring the data over network and dump to local directory.
    In your command it's actually running export against test1, then in that case, test1 need to have directory called dumps defined.

Maybe you are looking for

  • HOW to load a test limit set file to lv

    the test limit setting file maybe as following" Stepname Measured value HiLimit lOWLIMIT F1DC 2 0 5 F2Frequency 5 6 12 How can i first load in the limit file and then run the LV test using this limit? I heard that it can be realized by Access tool se

  • Cancel long running queries

    Hi Folks, Is it possible to submit a SELECT statment using OraSqlStmt object and retrieve the data so generated? I want to submit a long-running SELECT query against Oracle, and have the option to cancel the query. I can submit the query asynchronous

  • What is so special about the "ticket" login module stack?

    G'day, I am observing some odd behaviour with login module stacks. I have a custom login module that performs authentication using information in the HTTP servlet request. This custom login module does not require any interaction from the user. I wan

  • Problem mit Mountain Lion

    Unter OS X Lion konnte ich in der Vergangenheit problemlos aus iPhoto Ereignisse mit Dutzenden Fotos auf einen externen Server übertragen. Nach dem Upgrade auf Mountain Lion geht das nicht mehr. Ich muss jetzt jedes einzelne Foto uploaden, was sehr z

  • Project Documentation Documents

    We have created a template project for blueprint and have finished.  All of the documents were put on the project documenation tab.  We are now wanting to make this a global project or implementation project and realize we cannot copy the documents o